{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Content"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "+ Data Cleaning\n",
    "+ Exploratory Visualization\n",
    "+ Feature Engineering\n",
    "+ Basic Modeling & Evaluation\n",
    "+ Hyperparameters tuning\n",
    "+ Ensemble Methods"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "plt.style.use('ggplot')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# combine train and test set.\n",
    "train=pd.read_csv('E:/Workspace/Titanic/train.csv')\n",
    "test=pd.read_csv('E:/Workspace/Titanic/test.csv')\n",
    "full=pd.concat([train,test],ignore_index=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Name</th>\n",
       "      <th>Parch</th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Ticket</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>22.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>A/5 21171</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>38.0</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>PC 17599</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>26.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>35.0</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>113803</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>35.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>373450</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Age Cabin Embarked     Fare  \\\n",
       "0  22.0   NaN        S   7.2500   \n",
       "1  38.0   C85        C  71.2833   \n",
       "2  26.0   NaN        S   7.9250   \n",
       "3  35.0  C123        S  53.1000   \n",
       "4  35.0   NaN        S   8.0500   \n",
       "\n",
       "                                                Name  Parch  PassengerId  \\\n",
       "0                            Braund, Mr. Owen Harris      0            1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...      0            2   \n",
       "2                             Heikkinen, Miss. Laina      0            3   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)      0            4   \n",
       "4                           Allen, Mr. William Henry      0            5   \n",
       "\n",
       "   Pclass     Sex  SibSp  Survived            Ticket  \n",
       "0       3    male      1       0.0         A/5 21171  \n",
       "1       1  female      1       1.0          PC 17599  \n",
       "2       3  female      0       1.0  STON/O2. 3101282  \n",
       "3       1  female      1       1.0            113803  \n",
       "4       3    male      0       0.0            373450  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Data Cleaning"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Age             263\n",
       "Cabin          1014\n",
       "Embarked          2\n",
       "Fare              1\n",
       "Name              0\n",
       "Parch             0\n",
       "PassengerId       0\n",
       "Pclass            0\n",
       "Sex               0\n",
       "SibSp             0\n",
       "Survived        418\n",
       "Ticket            0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full.isnull().sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__The 'Age', 'Cabin', 'Embarked', 'Fare' columns have missing values. First we fill the missing 'Embarked' with the mode.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    S\n",
       "dtype: object"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full.Embarked.mode()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "full['Embarked'].fillna('S',inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__Since 'Fare' is mainly related to 'Pclass', we should check which class this person belongs to.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Name</th>\n",
       "      <th>Parch</th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Ticket</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1043</th>\n",
       "      <td>60.5</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Storey, Mr. Thomas</td>\n",
       "      <td>0</td>\n",
       "      <td>1044</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3701</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Age Cabin Embarked  Fare                Name  Parch  PassengerId  \\\n",
       "1043  60.5   NaN        S   NaN  Storey, Mr. Thomas      0         1044   \n",
       "\n",
       "      Pclass   Sex  SibSp  Survived Ticket  \n",
       "1043       3  male      0       NaN   3701  "
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full[full.Fare.isnull()]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__It's a passenger from Pclass 3, so we'll fill the missing value with the median fare of Pclass 3.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "full.Fare.fillna(full[full.Pclass==3]['Fare'].median(),inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**There are a lot of missing values in 'Cabin', maybe there is difference between the survival rate of people who has Cabin number and those who hasn't.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "full.loc[full.Cabin.notnull(),'Cabin']=1\n",
    "full.loc[full.Cabin.isnull(),'Cabin']=0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full.Cabin.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0xb5739b0>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeEAAAFJCAYAAACsBZWNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHdNJREFUeJzt3X90U/X9x/FXkxZIKRy2iXRtKSraFidaitbBFMQVcIX6\nY0dwlHmY/Ki1oKAyYFpWEXvQo5uAP7Cu3aBDwU0EtFA5DoTRM8ECnT2oJVCg/ChFEZBBE0yT+/3D\n7X7XIQah4UPD83FOzzG5Nzfv2KbP3pvkEmFZliUAAHDeOUwPAADAxYoIAwBgCBEGAMAQIgwAgCFE\nGAAAQ4gwAACGEGGgBTQ1NenVV1/V4MGDdc0116hPnz565JFHVFdXF7L7fOGFF/Tzn//8nLezb98+\nJScny+12f+Pye++9V8nJyc2+UlNTddddd2nNmjVnfD8+n0+vvfbaOc8LhBMiDLSA3//+93rzzTf1\n2GOP6d1331VRUZFOnDihkSNH6tixYyG5z9GjR6ukpCQk2/5fI0aMUEVFhf21ePFiXXHFFZo4caL2\n7t17RtsoKyvT3LlzQzwp0LoQYaAFLFmyROPHj1f//v2VkJCga6+9VrNnz9aJEyf0t7/9LST32b59\ne33ve98Lybb/l8vlUufOne2vlJQUzZo1S06nU++///4ZbYPzAgGnIsJAC4iIiNCGDRvU1NRkX+dy\nubRs2TINHDhQkjRt2jQ99NBDzW536623auHChfbyyZMna9iwYUpPT9fixYvVp08f+f1+e/2tW7eq\nR48e+uyzz+zD0ZZlacCAASotLW227dzcXBUUFEiSqqurNWrUKPXq1Us9e/bUsGHD9M9//vOcHrPT\n6bS/pK8PyT///PO69dZb9aMf/Uh9+/ZVYWGh/H6/Nm7cqN/85jc6evSokpOTtXHjRknSsmXLNHjw\nYF133XW66667tHbt2nOaCWhtiDDQAkaPHq233npL/fv317Rp07R06VIdOnRI3bp1U4cOHc54O2Vl\nZRo5cqQWLFigAQMG6Pjx43awJGnlypVKT0/XpZdeal8XERGhIUOGqLy83L7u2LFjqqioUFZWlo4f\nP65x48apR48eWr58uf7yl78oOjpav/3tb8/68R4/flzPPfecmpqadMstt0iSiouLtXz5cj399NNa\ntWqVpkyZotdee01r1qxRr1699Nhjj6lTp06qqKhQr169tH79ehUWFmrixIl65513dM899+ihhx5S\nVVXVWc8FtDaRpgcAwkFOTo66deumRYsWqaysTEuXLpXT6dSIESP02GOP2XuLwVx++eW688477cv9\n+/dXeXm5+vbtK0l699139cADD5xyu6FDh6q4uFgHDx5Uly5d9N5776lz587q3bu3vvjiC40dO1b3\n3XefIiO/fspnZ2dr0qRJZ/z4/vznP2vx4sWSvj6s/NVXX6lnz54qKSlRfHy8JOnKK6/UrFmzlJ6e\nLklKSEhQSUmJ3G63Bg4caP8x0rlzZ0lSUVGRxowZo8zMTElSYmKiPv74Y/3pT39Sr169zng2oDUj\nwkALGTx4sAYPHqwTJ07oww8/1LJly7Rw4UJ16dJFOTk5Z7SNrl27NruclZWlgoICFRQUaOvWrfr8\n8881ePDgU26XkpKiq666SuXl5frVr36llStXKjMzUxEREbrkkks0fPhwvf7666qpqdHu3bv1ySef\nKBAInPFju+OOO5STk6OmpiaVl5drwYIFGjNmjK6//np7nYyMDH344Yd69tlntWvXLrndbu3du1eD\nBg36xm1u375dH330kYqKiuzrfD6fLr/88jOeC2jtOBwNnKOamhrNnDnTvty+fXsNGDBAc+bMUWZm\nptavXy/p68PG/+u/X0OWpHbt2jW7fMstt8jn82nDhg0qLy9Xv3791LFjx2+cY+jQoXr33Xd15MgR\nbdiwQVlZWZKkgwcPKisrS6tXr1b37t2Vl5fXbN4z0bFjR3Xr1k3du3fXhAkTNGzYMD3yyCPaunWr\nvc6LL76o8ePHy+/3a9CgQSoqKlKPHj1Ou02/369HH31Uy5Yts79WrFihV1555TvNBrRmRBg4R4FA\nQAsXLtSHH354yrKYmBj7HcxRUVE6ceKEvezEiRM6fPjwt267bdu2GjRokNasWaP33ntPQ4cOPe26\nQ4cOVXV1td58801ddtllSklJkSStWLFCkZGRmj9/vsaMGaObbrpJDQ0Nks7+HcuTJk1SQkKCHn/8\ncfuNYyUlJZo6daqmTZumO++8UwkJCaqvr7fv43//COnevbv279+vbt262V9lZWVasWLFWc0EtEZE\nGDhHV199tQYNGqSJEyfqr3/9q/bs2aNPP/1UJSUleuedd3TfffdJknr27KlNmzZp3bp12rlzp/Lz\n8+VwBH8KZmVlaenSpTp69KhuvfXW064XHx+v6667Ti+//HKzWHfp0kWHDh3S2rVrtW/fPr311lua\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb3a44a8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pd.pivot_table(full,index=['Cabin'],values=['Survived']).plot.bar(figsize=(8,5))\n",
    "plt.title('Survival Rate')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__We can also plot the count of 'Cabin' to see some patterns.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Survived</th>\n",
       "      <th>Dead</th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cabin</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>no cabin</th>\n",
       "      <td>481</td>\n",
       "      <td>206</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cabin</th>\n",
       "      <td>68</td>\n",
       "      <td>136</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "Survived  Dead  Survived\n",
       "Cabin                   \n",
       "no cabin   481       206\n",
       "cabin       68       136"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cabin=pd.crosstab(full.Cabin,full.Survived)\n",
    "cabin.rename(index={0:'no cabin',1:'cabin'},columns={0.0:'Dead',1.0:'Survived'},inplace=True)\n",
    "cabin"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0xb8782e8>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeQAAAFFCAYAAAA97p6yAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtUVOXi//HPDA7CgKXlBUFUDEHFQEILM++leaFadCw8\nZZFmXyqv3XR1UuxkR7NOWYom2UpTM5cpViaVHM2uZhSG4iWNRMO8kqYMBAPz+8Pl/KIUjEAepvdr\nLddy9p7Z8+wZNu/Ze4Y9FpfL5RIAAKhT1roeAAAAIMgAABiBIAMAYACCDACAAQgyAAAGIMgAABiA\nIAPV4HQ6lZqaqoEDB6pz587q3r27HnroIeXl5dXafc6ZM0fx8fG1suyNGzcqPDy80uucPn1aL7zw\nggYOHKjIyEj169dPzzzzjE6dOlUrYzqXwsJCrVy58qLdH3AxWfg7ZODPmzVrljIyMvSvf/1LV1xx\nhQoKCpSSkqKcnBytW7dOl1xySY3fZ2FhoUpKStSkSZMaX/bGjRuVlJSk3bt3n3P+qVOnlJCQIH9/\nf40ZM0Zt27bVDz/8oFmzZslut2vJkiVq2LBhjY/r9+bOnasNGzZo9erVtX5fwMXGHjJQDatWrdKD\nDz6o3r17q1WrVoqMjNTs2bNVWFiojIyMWrlPPz+/WonxhXjuuefkcrm0aNEi9ezZU8HBwerVq5dS\nU1O1Y8cOpaWlXZRxsP8AT0aQgWqwWCzavHmznE6ne5qvr6/WrFmjG264QZI0efJkjRs3rsLt+vXr\np6VLl7rnP/LIIxo2bJiuvvpqvfnmm+revbvKysrc19++fbs6duyoI0eOuA9Zu1wu9e3bV6+//nqF\nZSclJSk5OVmSdPToUY0fP17R0dG67rrr9K9//avCoeW8vDwlJiYqKipKcXFx2rNnz3nXtaSkRO++\n+67uvPNO+fr6VpgXGBioxYsX68Ybb5R0JphLly7VwIEDdeWVV+rmm2/Wpk2b3NcfMWKEnnnmmQrL\nCA8P18aNG92PybRp0zR58mRFR0ere/fuSklJkSStXr1ac+fOVU5OjsLDw/Xjjz+ed8xAfUSQgWoY\nOXKkVq9erd69e2vy5MlKS0vTsWPH1KZNGzVq1OiCl7N27VrdcccdWrx4sfr27avTp0/ryy+/dM9f\nt26drr76ajVv3tw9zWKxaMiQIUpPT3dP++WXX/Tpp58qLi5OkjR27FhJ0ooVKzR//nzt379fEydO\nlCSVlpbqvvvuk91u16pVqzR27FgtXLjwvGM8cOCACgsLFRkZec75MTExaty4sSQpNTVVL774osaN\nG6d33nlH119/ve6//37t2rXrgh+Tt956S4GBgXr77bd1zz336KWXXtKOHTs0ePBgjRw5Uh06dNCn\nn36qli1bXvAygfqAIAPVcN999+mll15S+/bttXbtWk2ePFm9evXSU089VWEPtyohISG65ZZb1LFj\nR7Vo0UK9e/euENr3339fQ4cO/cPthg4dqqysLB0+fFiStH79ejVr1kwxMTHavHmzdu/erWeffVZh\nYWG68sor9dxzz+mTTz7Rnj179Pnnn+vgwYP6z3/+o9DQUA0YMED33nvvecd48uRJSaryhYbL5dJr\nr72mpKQkDRkyRCEhIRo7dqyuvfZavfLKKxf8mLRu3Vrjxo1T69atdd9996lx48batm2bfHx8ZLfb\n5eXlpWbNmsnLy+uClwnUBwQZqKaBAwdq0aJF+vLLL/Xyyy/rhhtu0NKlS/Xqq69e8DKCg4MrXI6L\ni9P69evldDq1detWHT16VAMHDvzD7Tp06KD27du7471u3ToNHjxYFotFe/fuVVFRka655hpFR0cr\nOjrafUg5NzdXe/bsUWBgoHuvVpKuvPLK847x7PvWZ8N8PgUFBfr555/VpUuXCtNjYmK0d+/eSm/7\nW61bt65w2c/Pr8JbA4CnIsjAn7Rr1y499dRT7st+fn7q27evXnzxRQ0ePFiffPKJpDOHln/v92Hx\n8fGpcLlPnz4qLS3V5s2blZ6erl69ep33E9tDhw7V+++/r59//lmbN292H652Op0KDAzUmjVrKvz7\n8MMP1aNHj3OOy2aznXd9W7du7d5LPZcZM2Zo0aJF5/2UdXl5ucrLy88571yh9fb2/sM0PsyFvwOC\nDPxJ5eXlWrp0qbZs2fKHef7+/u49SpvNpsLCQve8wsJCFRQUVLrshg0basCAAdqwYYPWr19/zsPV\nZw0dOlTZ2dl666231LZtW3Xo0EGSdMUVV+jIkSPy8/NTmzZt1KZNGzVo0EAzZsxQQUGBwsLClJ+f\nr2PHjrmXtWPHjvPej5eXl4YOHaolS5aouLi4wry8vDwtX75cNptN/v7+at68ubKysipcJysrS+3a\ntZN0Jra/fUwOHDhQ6ePxe+d6MQF4CoIM/EmdOnXSgAEDNH78eK1cuVL79+/Xzp079eqrr+rdd9/V\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb6f7780>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cabin.plot.bar(figsize=(8,5))\n",
    "plt.xticks(rotation=0,size='xx-large')\n",
    "plt.title('Survived Count')\n",
    "plt.xlabel('')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__From the plot, we can conclude that there is far more chance for a passenger to survive if we know his/her 'Cabin'.__"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Extract Title from 'Name'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "full['Title']=full['Name'].apply(lambda x: x.split(',')[1].split('.')[0].strip())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Mr              757\n",
       "Miss            260\n",
       "Mrs             197\n",
       "Master           61\n",
       "Rev               8\n",
       "Dr                8\n",
       "Col               4\n",
       "Major             2\n",
       "Mlle              2\n",
       "Ms                2\n",
       "Mme               1\n",
       "the Countess      1\n",
       "Don               1\n",
       "Lady              1\n",
       "Sir               1\n",
       "Jonkheer          1\n",
       "Dona              1\n",
       "Capt              1\n",
       "Name: Title, dtype: int64"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full.Title.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Sex</th>\n",
       "      <th>female</th>\n",
       "      <th>male</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Title</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Capt</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Col</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Don</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Dona</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Dr</th>\n",
       "      <td>1</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Jonkheer</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Lady</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Major</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Master</th>\n",
       "      <td>0</td>\n",
       "      <td>61</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Miss</th>\n",
       "      <td>260</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mlle</th>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mme</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mr</th>\n",
       "      <td>0</td>\n",
       "      <td>757</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mrs</th>\n",
       "      <td>197</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ms</th>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rev</th>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Sir</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>the Countess</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "Sex           female  male\n",
       "Title                     \n",
       "Capt               0     1\n",
       "Col                0     4\n",
       "Don                0     1\n",
       "Dona               1     0\n",
       "Dr                 1     7\n",
       "Jonkheer           0     1\n",
       "Lady               1     0\n",
       "Major              0     2\n",
       "Master             0    61\n",
       "Miss             260     0\n",
       "Mlle               2     0\n",
       "Mme                1     0\n",
       "Mr                 0   757\n",
       "Mrs              197     0\n",
       "Ms                 2     0\n",
       "Rev                0     8\n",
       "Sir                0     1\n",
       "the Countess       1     0"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.crosstab(full.Title,full.Sex)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__All the 'Title' belongs to one kind of gender except for 'Dr'.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Name</th>\n",
       "      <th>Parch</th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Title</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>796</th>\n",
       "      <td>49.0</td>\n",
       "      <td>1</td>\n",
       "      <td>S</td>\n",
       "      <td>25.9292</td>\n",
       "      <td>Leader, Dr. Alice (Farnham)</td>\n",
       "      <td>0</td>\n",
       "      <td>797</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>17465</td>\n",
       "      <td>Dr</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Age Cabin Embarked     Fare                         Name  Parch  \\\n",
       "796  49.0     1        S  25.9292  Leader, Dr. Alice (Farnham)      0   \n",
       "\n",
       "     PassengerId  Pclass     Sex  SibSp  Survived Ticket Title  \n",
       "796          797       1  female      0       1.0  17465    Dr  "
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full[(full.Title=='Dr')&(full.Sex=='female')]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__So the PassengerId of the female 'Dr' is '797'. Then we map the 'Title'.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "nn={'Capt':'Rareman', 'Col':'Rareman','Don':'Rareman','Dona':'Rarewoman',\n",
    "    'Dr':'Rareman','Jonkheer':'Rareman','Lady':'Rarewoman','Major':'Rareman',\n",
    "    'Master':'Master','Miss':'Miss','Mlle':'Rarewoman','Mme':'Rarewoman',\n",
    "    'Mr':'Mr','Mrs':'Mrs','Ms':'Rarewoman','Rev':'Mr','Sir':'Rareman',\n",
    "    'the Countess':'Rarewoman'}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "full.Title=full.Title.map(nn)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# assign the female 'Dr' to 'Rarewoman'\n",
    "full.loc[full.PassengerId==797,'Title']='Rarewoman'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Mr           765\n",
       "Miss         260\n",
       "Mrs          197\n",
       "Master        61\n",
       "Rareman       17\n",
       "Rarewoman      9\n",
       "Name: Title, dtype: int64"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full.Title.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "male    61\n",
       "Name: Sex, dtype: int64"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full[full.Title=='Master']['Sex'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    53.000000\n",
       "mean      5.482642\n",
       "std       4.161554\n",
       "min       0.330000\n",
       "25%       2.000000\n",
       "50%       4.000000\n",
       "75%       9.000000\n",
       "max      14.500000\n",
       "Name: Age, dtype: float64"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full[full.Title=='Master']['Age'].describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    210.000000\n",
       "mean      21.774238\n",
       "std       12.249077\n",
       "min        0.170000\n",
       "25%       15.000000\n",
       "50%       22.000000\n",
       "75%       30.000000\n",
       "max       63.000000\n",
       "Name: Age, dtype: float64"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full[full.Title=='Miss']['Age'].describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "+ __'Master' mainly stands for little boy, but we also want to find little girl. Because children tend to have higher survival rate.__"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "+ __For the 'Miss' with a Age record, we can simply determine whether a 'Miss' is a little girl by her age.__"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "+ __For the 'Miss' with no Age record, we use (Parch!=0). Since if it's a little girl, she was very likely to be accompanied by parents.__"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We'll create a function to filter the girls. The function can't be used if 'Age' is Nan, so first we fill the missing values with '999'."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "full.Age.fillna(999,inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def girl(aa):\n",
    "    if (aa.Age!=999)&(aa.Title=='Miss')&(aa.Age<=14):\n",
    "        return 'Girl'\n",
    "    elif (aa.Age==999)&(aa.Title=='Miss')&(aa.Parch!=0):\n",
    "        return 'Girl'\n",
    "    else:\n",
    "        return aa.Title"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "full['Title']=full.apply(girl,axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Mr           765\n",
       "Miss         201\n",
       "Mrs          197\n",
       "Master        61\n",
       "Girl          59\n",
       "Rareman       17\n",
       "Rarewoman      9\n",
       "Name: Title, dtype: int64"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full.Title.value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__Next we fill the missing 'Age' according to their 'Title'.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "999.0    263\n",
       "Name: Age, dtype: int64"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full[full.Age==999]['Age'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "Tit=['Mr','Miss','Mrs','Master','Girl','Rareman','Rarewoman']\n",
    "for i in Tit:\n",
    "    full.loc[(full.Age==999)&(full.Title==i),'Age']=full.loc[full.Title==i,'Age'].median()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 1309 entries, 0 to 1308\n",
      "Data columns (total 13 columns):\n",
      "Age            1309 non-null float64\n",
      "Cabin          1309 non-null object\n",
      "Embarked       1309 non-null object\n",
      "Fare           1309 non-null float64\n",
      "Name           1309 non-null object\n",
      "Parch          1309 non-null int64\n",
      "PassengerId    1309 non-null int64\n",
      "Pclass         1309 non-null int64\n",
      "Sex            1309 non-null object\n",
      "SibSp          1309 non-null int64\n",
      "Survived       891 non-null float64\n",
      "Ticket         1309 non-null object\n",
      "Title          1309 non-null object\n",
      "dtypes: float64(3), int64(4), object(6)\n",
      "memory usage: 133.0+ KB\n"
     ]
    }
   ],
   "source": [
    "full.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Finally, there is no missing value now!!!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Exploratory Visualization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Name</th>\n",
       "      <th>Parch</th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Title</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>22.0</td>\n",
       "      <td>0</td>\n",
       "      <td>S</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>Mr</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>C</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>Mrs</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>S</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>Miss</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>S</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>113803</td>\n",
       "      <td>Mrs</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>S</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>373450</td>\n",
       "      <td>Mr</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Age Cabin Embarked     Fare  \\\n",
       "0  22.0     0        S   7.2500   \n",
       "1  38.0     1        C  71.2833   \n",
       "2  26.0     0        S   7.9250   \n",
       "3  35.0     1        S  53.1000   \n",
       "4  35.0     0        S   8.0500   \n",
       "\n",
       "                                                Name  Parch  PassengerId  \\\n",
       "0                            Braund, Mr. Owen Harris      0            1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...      0            2   \n",
       "2                             Heikkinen, Miss. Laina      0            3   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)      0            4   \n",
       "4                           Allen, Mr. William Henry      0            5   \n",
       "\n",
       "   Pclass     Sex  SibSp  Survived            Ticket Title  \n",
       "0       3    male      1       0.0         A/5 21171    Mr  \n",
       "1       1  female      1       1.0          PC 17599   Mrs  \n",
       "2       3  female      0       1.0  STON/O2. 3101282  Miss  \n",
       "3       1  female      1       1.0            113803   Mrs  \n",
       "4       3    male      0       0.0            373450    Mr  "
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__Let's first check whether the Age of each Title is reasonable.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb3a4c88>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "full.groupby(['Title'])[['Age','Title']].mean().plot(kind='bar',figsize=(8,5))\n",
    "plt.xticks(rotation=0)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__As we can see, female has a much larger survival rate than male.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0xb9be208>"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nwr81dmAIedUAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb9b0c18>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pd.crosstab(full.Sex,full.Survived).plot.bar(stacked=True,figsize=(8,5),color=['#4169E1','#FF00FF'])\n",
    "plt.xticks(rotation=0,size='large')\n",
    "plt.legend(bbox_to_anchor=(0.55,0.9))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__ We can also check the relationship between 'Age' and 'Survived'.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "      <th>Dead</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>NaN</td>\n",
       "      <td>22.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>38.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>26.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>35.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>NaN</td>\n",
       "      <td>35.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Survived  Dead\n",
       "0       NaN  22.0\n",
       "1      38.0   NaN\n",
       "2      26.0   NaN\n",
       "3      35.0   NaN\n",
       "4       NaN  35.0"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "agehist=pd.concat([full[full.Survived==1]['Age'],full[full.Survived==0]['Age']],axis=1)\n",
    "agehist.columns=['Survived','Dead']\n",
    "agehist.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0xbe26a90>"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3kAAAHRCAYAAADXIHB/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X+U1XWdP/DnHQZiZoAUCXEAQw9fTXRTdEMq69hKtZlt\nZW1ipZkcF47rFraVrJWCydna3H6sYuGpzNTtdLYi28zcdP1RWV/CRimW/AEC6UQyzlGwGYVh7veP\njvOtTW2AufcObx6Pczpn7q/P+3Vfc7vD0/f783lXqtVqNQAAABShqdEFAAAAMHSEPAAAgIIIeQAA\nAAUR8gAAAAoi5AEAABREyAMAACiIkAcAAFCQ5kYXsLs6OzsbXULa29uHRR37Kv1vHL1vLP1vLP1v\nHL1vLP1vHL1vrOHa//b29ud8zEweAABAQYQ8AACAggh5AAAABRHyAAAACiLkAQAAFETIAwAAKIiQ\nBwAAUJC9dp88AACgHNV7Vw7p8SpHzxrU8/793/89d999d/r6+tLU1JQFCxbk8MMP360xr7jiivzt\n3/5tDjzwwN16/SWXXJK/+Zu/yTHHHLNbr3+GkAcAAOyTNmzYkLvuuiuXX355KpVKHnzwwfzzP/9z\nvvSlL+3W8c4777whrnD3WK4JAADsk9ra2vLb3/423/ve97Jly5ZMnz49n//857Nw4cJs2rQpSfK1\nr30tX/nKV7J58+acffbZWbhwYb72ta/lPe95T6rVapLkc5/7XH74wx8OvG7+/PnZvHlzkuSOO+7I\n5ZdfnieffDIXX3xxzj///Jx//vlZv359kmTFihU555xzsmjRojzyyCND8r6EPAAAYJ/0ohe9KEuX\nLs0vf/nLnHfeeTnzzDPzk5/85Dmf393dnU996lM5/fTTc+ihh2b16tXZvn17Ojo68opXvGLgeSef\nfHJuvvnmJMlNN92UU045Jddff32OPfbYfOYzn8k//uM/5jOf+Uy6u7vzrW99K8uWLcull16avr6+\nIXlflmsCAAD7pEceeSRtbW254IILkiT33XdfLrjgghxwwAEDz3lmti5JDjrooIwcOTJJcsopp+Tm\nm29Od3d3XvnKV2bEiBEDzzvppJPy/ve/P2984xvT09OTQw45JA899FA6Ojpy2223JUm2bduWzs7O\nTJs2LaNGjUqSvOQlLxmS92UmDwAA2CetW7cun/vc57Jjx44kyZQpUzJmzJiMGzcujz32WJLkf/7n\nfwaeX6lUBn4+9thj8+CDD+amm27KySef/EfHHTNmTA477LAsW7Ysf/3Xf50kmTp1at7+9rfns5/9\nbC6++OLMmTMnU6ZMyYYNG/L0009n586deeCBB4bkfZnJAwAA9kmvfvWrs2nTpixYsCAtLS2pVqtZ\nsGBBmpub89nPfjYTJ07MwQcf/KyvrVQqefWrX52f//znmTx58p88/sY3vjEXXHBBPvzhDydJ3v3u\nd+dTn/pUvvvd76anpyfvec97st9+++X000/Peeedl/322y8tLS1D8r4q1T+cf9yLdHZ2NrqEtLe3\nD4s69lX63zh631j631j63zh631j63zh631jDtf/t7e3P+ZjlmgAAAAUR8gAAAAoi5AEAABREyAMA\nACiIq2sCkJUPb6vLOLOmjK3LOACwLzOTBwAAUBAzeQAAQMMN9aqSwaweueeee7JkyZK8+MUvTrVa\nzc6dO/O2t70tr3nNa3Z73HPPPTcXXXRRJk2atNvH2FNCHgAAsM+aOXNmLrrooiRJb29v3v/+92fq\n1KmZPn16gyvbfUIeAABAkpaWlrzpTW/KHXfckdtuuy2rV69Oc3Nz3vzmN+fEE0/MPffck69+9avp\n7+9Pb29vPvrRj2bq1Kn54he/mJUrV2bixIl54oknGv02hDwAAIBn7L///vmP//iPTJ8+PZdffnkO\nOOCAvPWtb81f/uVfZsOGDbnwwgszYcKEXHfddbnjjjvyspe9LKtXr84XvvCF9Pb25owzzmj0WxDy\nAAAAnvHb3/42J510Un7wgx9k4cKFecELXpC+vr5s3rw5EyZMyOWXX56WlpZ0dXXlqKOOyq9//esc\nfvjhaWpqSltbWw455JBGvwVX1wQAAEiS3/3ud7nxxhvT1taWY445Jp/97GdzzTXX5DWveU3a29vz\nr//6r7nggguyaNGiHHDAAalWq5k2bVrWrl07sIRz48aNjX4bZvIAAIB9V0dHRxYuXJimpqbs3Lkz\nZ511Vl71qlflyiuvzPve97709fXl+OOPT2tra+bMmZP3ve99GT16dMaPH5/HHnss06dPz/HHH58F\nCxZkwoQJ2W+//Rr9llKpVqvVRhexOzo7OxtdQtrb24dFHfsq/W8cvW+sWvTfZuiD5/PfOHrfWPrf\nOHrfWMO1/+3t7c/5mOWaAAAABRHyAAAACiLkAQAAFKSmF1554IEHcv3112fx4sXZsGFDvvzlL6ep\n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\nOij9/f3p7+9PT09Pmpubs379+syYMSNJMnPmzKxevbqeJQEAABSlrjN5o0ePzpYtW3L++edn69at\nWbRoUdauXZtKpZIkaWlpSU9Pz6CO1d7eXstSB2241LGv0v/G0fvGGur+j+/pGtLjPZf29gl1GafW\nfP4bR+8bS/8bR+8ba2/rf11D3o033pijjz4673znO9PV1ZVLLrkkfX19A4/39vamra1tUMfq7Oys\nVZmD1t7ePizq2Ffpf+PofWPVov/d3duG9HjPpbNze13GqSWf/8bR+8bS/8bR+8Yarv1/vuBZ1+Wa\nbW1taW1tTZKMGTMmO3fuzLRp07JmzZokvz9n74gjjqhnSQAAAEWp60zeKaeckiuvvDIXXXRR+vr6\ncvrpp+fQQw/N8uXL09fXl8mTJ2f27Nn1LAkAAKAodT8n7wMf+MCf3L9kyZJ6lgEAAFAsG9IBAAAU\nRMgDAAAoiJAHAABQECEPAACgIEIeAABAQYQ8AACAggh5AAAABRHyAAAACiLkAQAAFETIAwAAKIiQ\nBwAAUBAhDwAAoCBCHgAAQEGEPAAAgIIIeQAAAAUR8gAAAAoyqJB30003paenp9a1AAAAsIcGFfI2\nbdqU97///fnCF76QdevW1bomAAAAdlPzYJ40f/78nHHGGfnRj36UL37xi0mS1772tTnhhBMyatSo\nmhYIAADA4A36nLzW1ta8/OUvzwknnJBt27bl5ptvzsKFC/PTn/60lvUBAACwCwY1k7d69erceuut\n+cUvfpHZs2fnQx/6UF784hdn8+bNufjiizN79uxa1wkAAMAgDCrkffnLX87rXve6zJ8/P62trQP3\nT5o0KSeddFLNigMAAGDXDGq55mWXXZaxY8emtbU1jz/+eG688cb09/cnSd7xjnfUtEAAAAAGb1Ah\n70tf+lLuvvvuJEmlUsnatWvzla98pZZ1AQAAsBsGFfLuv//+LFy4MEnywhe+MB/4wAeyZs2amhYG\nAADArhtUyOvr60tfX9/A7WeWagIAADC8DOrCK8cee2yWLl2aV73qValUKvnRj36UY489tta1AQAA\nsIsGFfLOOOOMfP/738+qVavS1NSU448/PnPmzKl1bQAAAOyiQYW8pqamnHzyyTn55JNrXQ8AAAB7\nYFAh76677sr111+fJ5988o/uv+aaa2pSFAAAALtnUCHv61//es4888wccsghqVQqta4JAACA3TSo\n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\nbNmynHrqqTnttNNy9913p7+/38V6auSOO+5Ib29vzj///MyePTuf/OQns3HjRv2vk5/97Gfp7OzM\nBRdckAMPPDArVqzIPffco/918swf+9/97nd55StfmWuvvVbv62T79u357//+7yxdujQnnnhiXvay\nl/nur6M1a9bkrrvuysc+9rG8+tWvTkdHR26//Xb9r4Np06blxBNPzIknnpiHHnoor3nNa3Lrrbfq\nfZ3cfffd2bBhQz7ykY/kgAMOyA033JCOjo69rv/DO4IOU7/61a9yzDHHJEkOO+ywrFu3rsEVle/A\nAw/MBz/4wYHb69evz4wZM5IkM2fOzOrVqxtVWvFe/vKX57TTTkvy//ew1P/6mTVrVubPn58k2bJl\nS1pbW/W/jq699tq89rWvzf7775/Ed089bdy4MU8//XQuvfTSLFmyJPfff7/+19G9996bgw8+OJdd\ndlk++clP5rjjjtP/Olu3bl0efvjhzJkzR+/r6KCDDkp/f3/6+/vT09OT5ubmvbL/Qt5u6O3tTWtr\n68Dtpqam7Ny5s4EVlW/27NkZMWLEH91XqVSSJC0tLenp6WlEWfuE0aNHp6WlJb29vfn0pz+duXPn\nJtH/ehoxYkSuuOKKXH311XnVq16VRP/r4fbbb8+4ceMG/qPeM/S+Pl7wghfkTW96Uz7ykY/knHPO\nyeWXX55E/+tl69atWb9+fT7wgQ/knHPOyb/927+lWq3qfx2tWLEib3/72wdu6319jB49Olu2bMn5\n55+f5cuX5w1veEOSva//zsnbDc/8g/cZz8xuUD/P/B8t+X3obmtra2A15evq6spll12W173udTnh\nhBNy3XXXDTym//Vx3nnn5fHHH8+FF16Y7du3D9yv/7Vz2223JUl+8YtfZMOGDbniiivyxBNPDDyu\n97V10EEHZdKkSalUKmlvb8+YMWOyfv36gcf1v7bGjh2byZMnp7m5Oe3t7Rk1alQee+yxgcf1v7Z+\n97vfpbOzM0cddVQS/+6ppxtvvDFHH3103vnOd6arqyuXXHJJ+vr6Bh7fW/pvJm83HH744eno6EiS\n3H///Tn44IMbXNG+Z9q0aVmzZk2SpKOjI0cccUSDKyrX448/nqVLl+Zd73pX/uqv/iqJ/tfTnXfe\nmRUrViRJRo0alUqlkkMPPVT/62DJkiVZsmRJFi9enGnTpuW8887LMccco/d1ctttt+WrX/1qkqS7\nuzu9vb05+uij9b9OXvKSl+See+5JtVpNd3d3nnrqqRx11FH6Xydr164dCHiJv7v11NbWNrBib8yY\nMdm5c+de2X+boe+GZ66uuWnTplSr1Zx77rnD/uTLEjz66KP53Oc+l6VLl6azszPLly9PX19fJk+e\nnAULFgz7qxztra6++urcddddf/QZP+uss3L11Vfrfx089dRTufLKK/PEE0+kr68vb3nLWzJ58mSf\n/zpbvHhxzjnnnFQqFb2vk2cuetPV1ZVKpZJ3vetdGTt2rP7X0XXXXZc1a9akv78/p59+eiZOnKj/\ndfKd73wnI0aMyBvf+MYk8e+eOnrm7+7jjz+evr6+nHzyyTn00EP3uv4LeQAAAAUZ3hEUAACAXSLk\nAQAAFETIAwAAKIiQBwAAUBAhDwAAoCBCHgAAQEGEPAAAgIIIeQAAAAX5f0tB0IQjIYmeAAAAAElF\nTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb72e860>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "agehist.plot(kind='hist',bins=30,figsize=(15,8),alpha=0.3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "      <th>Dead</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>NaN</td>\n",
       "      <td>7.25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>71.2833</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>53.1000</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>NaN</td>\n",
       "      <td>8.05</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Survived  Dead\n",
       "0       NaN  7.25\n",
       "1   71.2833   NaN\n",
       "2    7.9250   NaN\n",
       "3   53.1000   NaN\n",
       "4       NaN  8.05"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "farehist=pd.concat([full[full.Survived==1]['Fare'],full[full.Survived==0]['Fare']],axis=1)\n",
    "farehist.columns=['Survived','Dead']\n",
    "farehist.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0xb9cdcf8>"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nSX7yk5/krrvuSm9vb7q6unLNNdekpaUlt99+e/793/89Bx10UN5+++1d/TJEHgAAwFb7779//uVf\n/iWtra2ZP39+uru7c+GFF+YP//AP8+qrr+bqq6/OyJEjc8899+Sxxx7LH/3RH2X58uW57bbb0tXV\nlXPPPXdXvwSRBwAAsNXPf/7znHzyyfm3f/u3XHLJJUmSnp6ebNiwISNHjsz8+fPT2NiYN954Ix/5\nyEfyn//5nxk3blzq6uoybNiwHH744bv4FYg8AACAJMn//M//5KGHHsppp52WCRMm5LLLLktvb2/u\nvvvuNDc35/LLL8+9996bpqam3HDDDenr68uYMWNy//33p7e3N5s3b86aNWt29csQeQAAwJ6ro6Mj\nl1xySerq6vLee+9l2rRpOemkk3LLLbfkC1/4Qrq6unLiiSemqakpkydPzhe+8IXsvffeOeCAA7Jx\n48a0trbm+OOPz4wZMzJy5Mjst99+u/oleTP0avJm6FRb6W/iyc5ln6g2O0U12SeqrfSd8mboAAAA\newiRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCR\nBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAA\nUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCR\nBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAA\nUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCR\nBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAA\nUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUBCRBwAAUJAh\ntXzwt99+O1dddVWuueaa1NfXZ+HChalUKmlpacn06dNTV1eX9vb2tLe3p76+PlOnTs3EiRNrORIA\nAEDRahZ5PT09Wbx4cYYOHZokufPOO9PW1pbx48dn8eLFWbZsWcaOHZslS5Zk3rx52bJlS2bOnJmj\njz46DQ0NtRoLAACgaDW7XPPuu+/OKaeckv333z9Jsnr16hx11FFJkmOPPTbLly/Pyy+/nHHjxqWh\noSFNTU0ZNWpU1qxZU6uRAAAAileTM3k//OEPs++++2bChAm5//77+49XKpUkSWNjYzo7O9PZ2Zmm\npqb+r289PhDNzc3VHboann02I0aMqO1zDMbXTU0Nyl1nt2WfqDY7RTXZJ6ptT92pmkTe0qVLkyQv\nvPBCXn311SxYsCBvv/12/9e7uroybNiwNDU1ZdOmTe87PhDr16+v7tBV0Jxk48aNNX2OzYPwdVM7\nzc3Ng3LX2T3ZJ6rNTlFN9olqK32nPihgaxJ5c+bM6f949uzZOf/883P33XdnxYoVGT9+fDo6OvKR\nj3wkra2t+cY3vpHu7u709PRk3bp1aWlpqcVIAAAAe4Sa3l3z15133nlZtGhRenp6Mnr06EyaNCl1\ndXU59dRTM2vWrPT29qatra3/Ri0AAABsu5pH3uzZs/s//vUzfFtNnjw5kydPrvUYAAAAewRvhg4A\nAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQ\nkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcA\nAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQ\nkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcA\nAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQ\nkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcA\nAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQ\nkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFAQkQcAAFCQIbV64N7e3tx2\n22157bXXkiTnn39+hg4dmoULF6ZSqaSlpSXTp09PXV1d2tvb097envr6+kydOjUTJ06s1VgAAABF\nq1nkLVu2LEly3XXXZcWKFfnmN7+Zvr6+tLW1Zfz48Vm8eHGWLVuWsWPHZsmSJZk3b162bNmSmTNn\n5uijj05DQ0OtRgMAAChWzSLvox/9aP8Zuddffz1NTU154YUXctRRRyVJjj322Dz//POpq6vLuHHj\n0tDQkIaGhowaNSpr1qxJa2trrUYDAAAoVs0iL0nq6+uzYMGCPPPMM7n00kvzwgsvpFKpJEkaGxvT\n2dmZzs7ONDU19f/M1uO/T3Nzc83m3m7PPpsRI0bU9jkG4+umpgblrrPbsk9Um52imuwT1ban7lRN\nIy9JLrroorz11lu5+uqr093d3X+8q6srw4YNS1NTUzZt2vS+47/P+vXrazLvjmhOsnHjxpo+x+ZB\n+Lqpnebm5kG56+ye7BPVZqeoJvtEtZW+Ux8UsDW7u+bjjz+e++67L0kydOjQVCqVHHHEEVmxYkWS\npKOjI0ceeWRaW1uzcuXKdHd3p7OzM+vWrUtLS0utxgIAAChaTX8n75ZbbsmsWbPS09OTadOmZfTo\n0Vm0aFF6enoyevToTJo0KXV1dTn11FMza9as9Pb2pq2tLUOHDq3VWAAAAEWrWeTtvffeufTSS993\nfM6cOe87Nnny5EyePLlWowAAAOwxvBk6AABAQUQeAABAQQYUeUuWLBnQ2xoAAACwaw0o8tauXZuL\nL744t912W1555ZVazwQAAMB2GtCNVy644IKce+65efLJJ3P77bcnSU455ZSceOKJ7oQJAAAwiAz4\nd/Kamppywgkn5MQTT8wvf/nLPPzww7nkkkvy4x//uJbzAQAAsA0GdCZv+fLlefTRR/PCCy9k0qRJ\nufzyy/PhD384GzZsyKxZszJp0qRazwkAAMAADCjy/umf/ilTpkzJBRdckKampv7jo0aNysknn1yz\n4QAAANg2A7pc86abbso+++yTpqamvPXWW3nooYfS29ubJPnLv/zLmg4IAADAwA0o8r72ta/l2Wef\nTZJUKpWsXLkyX//612s5FwAAANthQJG3atWqXHLJJUmSD33oQ7n00kuzYsWKmg4GAADAthtQ5PX0\n9KSnp6f/862XagIAADC4DOjGK8cdd1zmzp2bk046KZVKJU8++WSOO+64Ws8GAADANhpQ5J177rn5\nwQ9+kGXLlqWuri7HH398Jk+eXOvZAAAA2EYDiry6urqcdtppOe2002o9DwAAADtgQJH31FNP5d57\n78277777G8fvvPPOmgwFAADA9hlQ5H3rW9/Keeedl8MPPzyVSqXWMwEAALCdBhR5w4YNy/HHH1/r\nWQAAANhBA3oLhdbW1nR0dNR6FgAAAHbQgM7kdXR05OGHH86QIUMyZMiQ9PX1pVKp+J08AACAQWZA\nkXfttdfWeg4AAACqYECXax544IF55ZVX8uijj2bffffNz372sxx44IG1ng0AAIBtNKDIu//++/PI\nI4/k6aefTnd3d7797W/n29/+dq1nAwAAYBsNKPJ+9KMf5W//9m+z1157ZZ999sncuXPzox/9qNaz\nAQAAsI0GFHlDhgxJQ0ND/+fDhg1LfX19zYYCAABg+wzoxisjRozIc889l0qlki1btuSBBx7IyJEj\naz0bAAAA22hAZ/I++9nP5sEHH8yaNWty7rnnpqOjI9OnT6/1bAAAAGyjAZ3JO+CAA3Lttddm8+bN\n6e3tTWNjY63nAgAAYDsMKPIefPDB33r89NNPr+owAAAA7JgBRd7atWv7P+7p6cnKlSszfvz4mg0F\nAADA9hlQ5F144YW/8fk777yTBQsW1GQgAAAAtt+Abrzyf+277755/fXXqz0LAAAAO2ibfyevr68v\nr7zySvbdd9+aDQUAAMD22ebfyUuSkSNH5txzz63JQAAAAGy/7fqdPAAAAAanAUXenDlzPvDrs2bN\nqsowAAAA7JgBRd4RRxyR//qv/8rkyZMzZMiQPPbYY+nt7c3HPvaxWs8HAADANhhQ5L344ou57rrr\nUlf3q5txHnPMMfnSl76USZMm1XQ4AAAAts2A3kLhnXfeyZYtW/o/37RpU7q7u2s2FAAAANtnQGfy\nTjzxxFx99dU5/vjj09fXl6effjqnnXZarWcDAABgGw0o8s4666wcfvjh+elPf5qhQ4fmc5/7XI46\n6qhazwYAAMA2GtDlmklywAEHpKWlJWeddVaGDBlQGwIAALCTDSjyli5dmltuuSXf+9730tnZmb//\n+79Pe3t7rWcDAABgGw0o8n7wgx/k+uuvT2NjYz70oQ9l3rx5+f73v1/r2QAAANhGA4q8urq6NDU1\n9X8+cuTI1NfX12woAAAAts+AIm/48OF59dVXU6lUkiRPPPFEhg8fXtPBAAAA2HYDuoPKtGnTcvPN\nN2fDhg254IIL0tDQkCuuuKLWswEAALCNBhR5mzdvzo033pj169ent7c3zc3N7rAJAAAwCA3ocs35\n8+enrq4uhx56aA477DCBBwAAMEgNKPIOO+ywPPnkk3njjTfy7rvv9v8PAACAwWVAp+SWLVuWH//4\nx+87/q1vfavqAwEAALD9BhR59957b63nAAAAoAo+8HLNRYsW9X/8zjvv1HwYAAAAdswHRt7q1av7\nP547d27NhwEAAGDHfGDk9fX1/daPAQAAGJwGdHfNJKlUKrWcAwAAgCr4wBuv9PX19b9VQm9v7/ve\nNmH48OG1mwwAAIBt9oGRt3bt2kyfPr3/81//OPEWCgAAAIPNB0aeiAMAANi9DPh38gAAABj8RB4A\nAEBBRB4AAEBBRB4AAEBBRB4AAEBBRB4AAEBBRB4AAEBBRB4AAEBBRB4AAEBBRB4AAEBBRB4AAEBB\nRB4AAEBBRB4AAEBBRB4AAEBBRB4AAEBBRB4AAEBBRB4AAEBBhtTiQXt6enLrrbfm9ddfz5YtW3Lm\nmWfm0EMPzcKFC1OpVNLS0pLp06enrq4u7e3taW9vT319faZOnZqJEyfWYiQAAIA9Qk0i74knnsg+\n++yTz3/+83n33Xdz+eWXZ8yYMWlra8v48eOzePHiLFu2LGPHjs2SJUsyb968bNmyJTNnzszRRx+d\nhoaGWowFAABQvJpE3gknnJBJkyYlSfr6+lJfX5/Vq1fnqKOOSpIce+yxef7551NXV5dx48aloaEh\nDQ0NGTVqVNasWZPW1tZajAUAAFC8mkTe3nvvnSTp6urKzTffnLa2ttx9992pVCpJksbGxnR2dqaz\nszNNTU39P7f1+EA0NzdXf/Ad9eyzGTFiRG2fYzC+bmpqUO46uy37RLXZKarJPlFte+pO1STykuSN\nN97ITTfdlClTpuTEE0/MPffc0/+1rq6uDBs2LE1NTdm0adP7jg/E+vXrqz7zjmpOsnHjxpo+x+ZB\n+Lqpnebm5kG56+ye7BPVZqeoJvtEtZW+Ux8UsDW5u+Zbb72VuXPn5pxzzsknPvGJJMmYMWOyYsWK\nJElHR0eOPPLItLa2ZuXKlenu7k5nZ2fWrVuXlpaWWowEAACwR6jJmbz77rsv7777br7zne/kO9/5\nTpJk2rRpueOOO9LT05PRo0dn0qRJqaury6mnnppZs2alt7c3bW1tGTp0aC1GAgAA2CNU+vr6+nb1\nENtjMJ56bX722dpfrjllSk0fn8Gl9MsM2LnsE9Vmp6gm+0S1lb5TO/1yTQAAAHYNkQcAAFCQmt1d\nk9rY65FHdsrzuCwUAAB2T87kAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAA\nFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETk\nAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAA\nFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETk\nAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAAFETkAQAA\nFETkAQAAFETkAQAAFETkAQAAFETkAQAAFGTIrh6gJA/kjGzMxpo+xxl5oKaPDwAA7N6cyQMAACiI\nyAMAACiIyAMAACiIyAMAACiIyAMAACiIyAMAACiIyAMAACiIyAMAACiIyAMAACiIyAMAACiIyAMA\nACiIyAMAACiIyAMAACiIyAMAACiIyAMAACiIyAMAACiIyAMAACiIyAMAACiIyAMAACiIyAMAACiI\nyAMAACiIyAMAACjIkFo++EsvvZR77703s2fPzoYNG7Jw4cJUKpW0tLRk+vTpqaurS3t7e9rb21Nf\nX5+pU6dm4sSJtRwJAACgaDWLvO9+97t5/PHHs/feeydJ7rzzzrS1tWX8+PFZvHhxli1blrFjx2bJ\nkiWZN29etmzZkpkzZ+boo49OQ0NDrcYCAAAoWs0u1zz44INz2WWX9X++evXqHHXUUUmSY489NsuX\nL8/LL7+ccePGpaGhIU1NTRk1alTWrFlTq5EAAACKV7MzeZMmTcovfvGL3zhWqVSSJI2Njens7Exn\nZ2eampr6v771+EA0NzdXb9gqefbZZMSIETV9jhGp7eP3G4T//+6pBuOus/uyT1SbnaKa7BPVtqfu\nVE1/J+/XbQ28JOnq6sqwYcPS1NSUTZs2ve/4QKxfv77qM+645mzcuLGmz7AxtX38rTYPyv9/9zzN\nzc2DdNfZHdknqs1OUU32iWorfac+KGB32t01x4wZkxUrViRJOjo6cuSRR6a1tTUrV65Md3d3Ojs7\ns27durS0tOyskQAAAIqz087knXfeeVm0aFF6enoyevToTJo0KXV1dTn11FMza9as9Pb2pq2tLUOH\nDt1ZIwEAABSnppF30EEHZe7cuUl+dTpxzpw57/ueyZMnZ/LkybUcAwAAYI/hzdABAAAKIvIAAAAK\nIvIAAAAKIvIAAAAKIvIAAAAKIvIAAAAKstPeJ4/qeCBn7JTnmZLNO+V5AACA6nImDwAAoCAiDwAA\noCAiDwAAoCAiDwAAoCAiDwAAoCAiDwAAoCAiDwAAoCAiDwAAoCAiDwAAoCAiDwAAoCAiDwAAoCAi\nDwAAoCAiDwAAoCAiDwAAoCAiDwAAoCAiDwAAoCAiDwAAoCAiDwAAoCAiDwAAoCAiDwAAoCAiDwAA\noCAiDwAAoCAiDwAAoCAiDwAAoCAiDwAAoCAiDwAAoCAiDwAAoCAiDwAAoCAiDwAAoCAiDwAAoCAi\nDwAAoCAiDwAAoCBDdvUAUGt7PfJIzZ9j85QpNX8OAAAYCGfyAAAACuJMHr/Vzjj7BQAAVJ8zeQAA\nAAUReQAAAAUReQAAAAUReQAAAAUReQAAAAUReQAAAAUReQAAAAUReQAAAAUReQAAAAUReQAAAAUR\neQAAAAUZsqsHYM/1QM7YKc9zRh7YKc8DAACDgTN5AAAABRF5AAAABXG5JsXbGZeFTsnmmj8HAAAM\nhDN5AAAABRF5AAAABRF5AAAABRF5AAAABRF5AAAABRF5AAAABRF5AAAABRF5AAAABRF5AAAABRF5\nAAAABRmyqwdgcHogZ+zqEQAAgO0g8qAK9nrkkdo88IgR2WvjxiTJ5ilTavMcAAAUReRBFdTqzOeI\njMjG/CrypmRzTZ4DAICyiDzYTdTsbOH/sTMu1Z0yRbACANSKyAN2up0RrC5vBQD2VO6uCQAAUBBn\n8mA34Y6nAAAMhMgDdrqd8nt/blRDjbnsGIDBSuQBsNNu7LMz7Kww8o8VAAxWgyLyent7c/vtt2fN\nmjVpaGjIjBkzMmrUqF09FsAeo6TLgYURwJ7jkUf2+p1fGzEi2bjxd399oHbHu4IPish75plnsmXL\nlsydOzerVq3KXXfdlSuuuGJXjwXsxj7oD/1q2h3/4C/dzjsrWU4YA1CWQRF5L774YiZMmJAkGTt2\nbF555ZVdPBEAu6uSzkoCwPYYFJHX1dWVpqam/s/r6ury3nvvpb6+/nf+THNz884YbZv8aqQRu3oM\nimOnqJ7f9WfntGk7dw7KMRj/Pmb3ZZ/YVr//768987+jBsX75DU2Nqarq6v/876+vg8MPAAAAH67\nQRF548aNS0dHR5Jk1apVOeyww3bxRAAAALunSl9fX9+uHmLr3TXXrl2bvr6+XHjhhRk9evSuHgsA\nAGC3Myhia7pPAAAErklEQVQiDwAAgOoYFJdrAgAAUB0iDwAAoCCD4i0Udndbf6dwzZo1aWhoyIwZ\nMzJq1KhdPRa7iZdeein33ntvZs+enQ0bNmThwoWpVCppaWnJ9OnTU1dXl/b29rS3t6e+vj5Tp07N\nxIkTd/XYDEI9PT259dZb8/rrr2fLli0588wzc+ihh9optltvb29uu+22vPbaa0mS888/P0OHDrVT\n7JC33347V111Va655prU19fbJ3bIlVdemcbGxiTJQQcdlKlTp9qpiLyqeOaZZ7Jly5bMnTs3q1at\nyl133ZUrrrhiV4/FbuC73/1uHn/88ey9995JkjvvvDNtbW0ZP358Fi9enGXLlmXs2LFZsmRJ5s2b\nly1btmTmzJk5+uij09DQsIunZ7B54oknss8+++Tzn/983n333Vx++eUZM2aMnWK7LVu2LEly3XXX\nZcWKFfnmN7+Zvr4+O8V26+npyeLFizN06NAk/t5jx3R3d6evry+zZ8/uP/blL3/ZTsXlmlXx4osv\nZsKECUmSsWPH5pVXXtnFE7G7OPjgg3PZZZf1f7569eocddRRSZJjjz02y5cvz8svv5xx48aloaEh\nTU1NGTVqVNasWbOrRmYQO+GEE3LWWWcl+d/3G7VT7IiPfvSjueCCC5Ikr7/+epqamuwUO+Tuu+/O\nKaeckv333z+Jv/fYMWvWrMnmzZtz/fXXZ86cOVm1apWd+v9EXhV0dXWlqamp//O6urq89957u3Ai\ndheTJk1KfX39bxyrVCpJksbGxnR2dqazs/M39mvrcfi/9t577zQ2Nqarqys333xz2traktgpdkx9\nfX0WLFiQO+64IyeddFISO8X2+eEPf5h99923/x/Gt7JPbK+99torZ5xxRr70pS/l/PPPz/z585PY\nqcTlmlWx9T+qttr6L+iwrbb+oZT86h8Phg0blqampmzatOl9x+G3eeONN3LTTTdlypQpOfHEE3PP\nPff0f81Osb0uuuiivPXWW7n66qvT3d3df9xOsS2WLl2aJHnhhRfy6quvZsGCBXn77bf7v26f2FaH\nHHJIRo0alUqlkubm5gwfPjyrV6/u//qevFPO5FXBuHHj0tHRkSRZtWpVDjvssF08EburMWPGZMWK\nFUmSjo6OHHnkkWltbc3KlSvT3d2dzs7OrFu3Li0tLbt4Ugajt956K3Pnzs0555yTT3ziE0nsFDvm\n8ccfz3333ZckGTp0aCqVSo444gg7xXaZM2dO5syZk9mzZ2fMmDG56KKLMmHCBPvEdlu6dGnuuuuu\nJMmbb76Zrq6uHHPMMXYq3gy9KrbeXXPt2rXp6+vLhRdemNGjR+/qsdhN/OIXv8hXv/rVzJ07N+vX\nr8+iRYvS09OT0aNHZ8aMGf13hHr00UfT29ubT33qU5k0adKuHptB6I477shTTz31G3/+TJs2LXfc\ncYedYrts2rQpt9xyS95+++309PTkL/7iLzJ69Gh/TrHDZs+enfPPPz+VSsU+sd16enqycOHCvPHG\nG6lUKjnnnHOyzz772KmIPAAAgKK4XBMAAKAgIg8AAKAgIg8AAKAgIg8AAKAgIg8AAKAgIg8AAKAg\nIg8AAKAgIg8AAKAg/w/XufhYjvoKOwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb70e080>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "farehist.plot.hist(bins=30,figsize=(15,8),alpha=0.3,stacked=True,color=['blue','red'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__People with high 'Fare' are more likely to survive, though most 'Fare' are under 100.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([0, 1, 2, 3, 4, 5, 6]), <a list of 7 Text xticklabel objects>)"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlEAAAGoCAYAAABmCbCSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAH6NJREFUeJzt3XuU1PV9//HXXiDsAileIriLlygBrR7leEEUTbWhNiVG\ne9LUovWopUGBqpF6wcYLKBIbzUmikRor6UVrUntC4y2iSRODwXosBlqtAVESwYB44aLQ3RXY3d8f\nidvw87L2s7vuyD4ef+3Md/Y7n3nPxDz5zux3qtrb29sDAMD/SXVvLwAA4INIRAEAFBBRAAAFRBQA\nQAERBQBQQEQBABSo7Y07Xbt2bW/c7XvS0NBQ0eurdOZXzuy6xvy6xvy6xvzKVfrsGhoa3nGbI1EA\nAAVEFABAAREFAFBARAEAFBBRAAAFRBQAQAERBQBQoFfOE9WZ1sknd+v+am67t1v3BwDgSNRv+Na3\nvpWzzz47n//85zN9+vQ888wzxfu6+eab89JLLxX//jXXXJP//M//LP59AKBnVeSRqN7w/PPP59//\n/d8zf/78vPjii3nuuedy3XXX5Zvf/GbR/s4777xuXiEAUEkcifq1gQMH5qWXXsp3vvOdvPLKKxkx\nYkRuueWWXHjhhVm9enWS5N57780//MM/ZN26dZk0aVIuvPDCfPvb385ZZ52V9vb2JMmNN96Yn/zk\nJx2/d+6552bdunVJkoULF+brX/96tmzZkpkzZ2b69OmZPn16fv7znydJvvvd72by5Mm57LLLsmbN\nmt4ZBADwnoioX/vIRz6SOXPmZMmSJTnvvPNy5pln5rHHHnvH22/YsCE33HBDTjvttOy333558skn\ns3Xr1ixdujTHHHNMx+0mTJiQhx56KEmyYMGCnHTSSbnzzjtz2GGH5atf/WouuuiifPWrX82GDRvy\nr//6r5k7d26uvfbabN++vccfMwBQztt5v7ZmzZoMHDgw1113XdauXZtnnnkmM2bMyG677dZxmzeP\nNiXJnnvumX79+iVJTjrppDz00EPZsGFDxo0bl5qamo7bfeITn8jnP//5fOpTn0pTU1M++tGP5he/\n+EWWLl2ahx9+OEmyefPmrF27Nvvuu2/69++fJDnggAPej4cNABRyJOrXVq5cmRtvvDFbt25Nkgwf\nPjyDBg3Khz/84axfvz5J8uyzz3bcvqqqquPnww47LM8991wWLFiQCRMm7LDfQYMGZeTIkZk7d24+\n+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\nl9v0pkpfX6XrS/N7obcX8C760vPwpr70mCv5tZf0refiTX3lMXvt/a9OI6q5uTn19fUdl6urq9Pa\n2pqampq8/vrreeaZZzJp0qQMGzYsX/rSl7L//vvn4IMPftd9rl27tusr7yENDQ0Vvb5KZ36Vo689\nD157laWvPRdef5Wju5+Hd4uyTt/Oq6urS3Nzc8fl9vb21NTUJEkGDx6cYcOGZfjw4amtrc2hhx66\nw5EqAICdVacRNWrUqCxdujRJsmLFiuy9994d24YOHZqWlpasW7cuya/e+ttrr716aKkAAJWj07fz\nxowZkyeffDJXXHFF2tvbM23atCxatCgtLS0ZP358pk6dmhtvvDHJrz4zddhhh/X4ogEAelunEVVd\nXZ1zzjlnh+saGxs7fj744INz3XXXdf/KAAAqmJNtAgAUEFEAAAVEFABAgU4/E8XOrXXyyd26v+4+\nCVvNbfd28x4BoHs4EgUAUEBEAQAUEFEAAAVEFABAAREFAFBARAEAFBBRAAAFRBQAQAERBQBQQEQB\nABQQUQAABUQUAEABEQUAUEBEAQAUEFEAAAVEFABAAREFAFBARAEAFBBRAAAFant7AV3VOvnkbt3f\nC926t6Tmtnu7eY8AQCVwJAoAoICIAgAoIKIAAAqIKACAAiIKAKCAiAIAKCCiAAAKiCgAgAIiCgCg\ngIgCACggogAACogoAIACIgoAoICIAgAoIKIAAAqIKACAAiIKAKCAiAIAKCCiAAAKiCgAgAIiCgCg\ngIgCACggogAACogoAIACIgoAoICIAgAoIKIAAAqIKACAAiIKAKCAiAIAKCCiAAAKiCgAgAIiCgCg\ngIgCACggogAACogoAIACIgoAoICIAgAoIKIAAAqIKACAArWd3aCtrS3z5s3LqlWr0q9fv0yZMiXD\nhg17y+1uvfXWDBo0KH/6p3/aIwsFAKgknR6JWrx4cbZt25Y5c+bk9NNPz+233/6W2/zgBz/I6tWr\ne2SBAACVqNOIWr58eUaPHp0kGTlyZFauXLnD9meeeSbPPvtsfu/3fq9nVggAUIE6fTuvubk59fX1\nHZerq6vT2tqampqabNy4Md/5zndy8cUX57HHHnvPd9rQ0FC22rfxQrftqWd052PtCebXNZU8v0qf\nXU/oS4+5kl97Sd96Lt7UVx6z197/6jSi6urq0tzc3HG5vb09NTU1SZLHHnssr7/+eq677rps2rQp\nb7zxRhobG3P88ce/6z7Xrl3btVV/gPSlx9oTzK9cX5tdQ0NDn3vMlayvPRdef5Wju5+Hd4uyTiNq\n1KhR+elPf5pjjjkmK1asyN57792xbcKECZkwYUKS5Mc//nHWrFnTaUABAOwMOo2oMWPG5Mknn8wV\nV1yR9vb2TJs2LYsWLUpLS0vGjx//fqwRAKDidBpR1dXVOeecc3a4rrGx8S23cwQKAOhLnGwTAKCA\niAIAKCCiAAAKiCgAgAIiCgCggIgCACggogAACogoAIACIgoAoICIAgAo0OnXvgDAzqZ18sndur8X\nunVvSc1t93bzHukJjkQBABQQUQAABUQUAEABEQUAUEBEAQAUEFEAAAVEFABAAREFAFBARAEAFBBR\nAAAFRBQAQAERBQBQQEQBABQQUQAABUQUAEABEQUAUEBEAQAUEFEAAAVEFABAAREFAFBARAEAFBBR\nAAAFRBQAQAERBQBQQEQBABQQUQAABUQUAEABEQUAUEBEAQAUEFEAAAVEFABAAREFAFBARAEAFBBR\nAAAFRBQAQAERBQBQQEQBABQQUQAABUQUAEABEQUAUEBEAQAUEFEAAAVEFABAAREFAFBARAEAFBBR\nAAAFRBQAQAERBQBQQEQBABQQUQAABUQUAEABEQUAUEBEAQAUEFEAAAVqO7tBW1tb5s2bl1WrVqVf\nv36ZMmVKhg0b1rF90aJFeeCBB1JTU5O99torn/vc51Jdrc0AgJ1bp7WzePHibNu2LXPmzMnpp5+e\n22+/vWPb1q1bc9ddd2XmzJmZPXt2mpqasmTJkh5dMABAJej0SNTy5cszevToJMnIkSOzcuXK//3l\n2trMnj07H/rQh5L86qhVv379Or3ThoaG0vW+xQvdtqee0Z2PtSeYX9dU8vwqfXY9oS895kp+7SWV\n/1yYXzmz+1+dRlRzc3Pq6+s7LldXV6e1tTU1NTWprq7OkCFDkiQLFixIS0tLDjnkkE7vdO3atV1Y\n8gdLX3qsPcH8yvW12TU0NPS5x1zJPBddY37lunt27xZlnUZUXV1dmpubOy63t7enpqam43JbW1v+\n6Z/+KS+++GIuuuiiVFVVdXG5AACVr9PPRI0aNSpLly5NkqxYsSJ77733Dtv/9m//Ntu2bcsll1zS\n8bYeAMDOrtMjUWPGjMmTTz6ZK664Iu3t7Zk2bVoWLVqUlpaW7Lfffnn44YdzwAEH5JprrkmSTJgw\nIWPGjOnxhQMA9KZOI6q6ujrnnHPODtc1NjZ2/HzXXXd1/6oAACqcEzoBABQQUQAABUQUAEABEQUA\nUEBEAQAUEFEAAAVEFABAAREFAFBARAEAFBBRAAAFRBQAQIFOvzsPoCe0Tj65W/f3QrfuLam57d5u\n3iOws3EkCgCggIgCACggogAACogoAIACIgoAoICIAgAoIKIAAAqIKACAAiIKAKCAiAIAKCCiAAAK\niCgAgAIiCgCggIgCACggogAACogoAIACIgoAoICIAgAoIKIAAAqIKACAAiIKAKCAiAIAKCCiAAAK\niCgAgAIiCgCggIgCACggogAACogoAIACIgoAoICIAgAoIKIAAAqIKACAAiIKAKCAiAIAKCCiAAAK\niCgAgAIiCgCggIgCACggogAACogoAIACIgoAoICIAgAoIKIAAAqIKACAAiIKAKCAiAIAKCCiAAAK\niCgAgAIiCgCggIgCACggogAACogoAIACtZ3doK2tLfPmzcuqVavSr1+/TJkyJcOGDevY/sQTT2T+\n/Pmprq7OCSeckPHjx/foggEAKkGnR6IWL16cbdu2Zc6cOTn99NNz++23d2zbvn17/vEf/zGXX355\nrr766vzwhz/Mpk2benTBAACVoNOIWr58eUaPHp0kGTlyZFauXNmxbc2aNRk2bFgGDRqU2trajBo1\nKsuWLeu51QIAVIhO385rbm5OfX19x+Xq6uq0trampqbmLdvq6urS1NTU6Z02NDQULvdtfO+J7ttX\nX2R+XWN+5cyua8yva8yvnNl16PRIVF1dXZqbmzsut7e3p6ampmNbS0tLx7bm5uYMHDiwB5YJAFBZ\nOo2oUaNGZenSpUmSFStWZO+99+7Y1tjYmBdffDFbtmzJ9u3bs2zZsowcObLnVgsAUCGq2tvb29/t\nBm/+dd7q1avT3t6eadOm5Re/+EVaWloyfvz4jr/Oa2trywknnJBPfvKT79faAQB6TacRBQDAWznZ\nJgBAAREFAFBARAEAFKiZNWvWrN5eRG946aWXcuutt+Z73/teFi1alMceeyz77rtvHn744dTW1mbX\nXXfd4faTJ0/OySef3EurfX89/fTTOe+889LQ0LDDX2NefPHFefbZZzNmzJj3vK8HH3wwI0aM6Ill\nfqB0NtNHHnkkxxxzTC+u8IOlO1+jfYWZ7ejpp5/OF77whSxZsiQLFy7MggUL8tRTT+XII49MdbXj\nC4kZvRednmxzZ/TGG2/k+uuvz7nnnttxSobnnnsu3/zmN9NHm/ItGhsb8+ijj2bcuHFJktWrV+eN\nN974P+9n/vz5/mLz195tphdffHFvLu0Dqbteo32Jme3o4IMPzoUXXthx+cYbb8wTTzyRsWPH9uKq\nKosZvbs+GVE//elPc9BBB+1wTqsRI0Zk5syZmTt3bsaNG5dNmzbl4YcfTltbW0499dReXG3v2Gef\nfbJ27do0NTWlvr4+jzzySI499ti8+uqrefDBB/P444/njTfeyODBg3PJJZfk5Zdfzi233JLq6uq0\nt7fnggsuyCOPPJItW7Zk3rx5Ofvss3Pbbbdl3bp1aWtry8SJE3PQQQfloosuyp577pna2tod/oe6\nM3q3mU6ePDm33XZbHnrooSxcuDBVVVXZf//9M2nSpDz++OO55557UlNTk1122SUXXnihfwXm3ec5\nbdq0NDY2prGxMWeffXZvL7VivNeZHXjggX3uNbd9+/Zs2rQpAwcOzDe+8Y2sX78+GzduzBFHHJGJ\nEydm7ty52bx5c7Zs2ZLLLrss9957b5YtW5a2tracdNJJOfroozNr1qzss88+eeGFFzJgwIAccMAB\n+a//+q80NTXl8ssvT3V1db7xjW+kqakpGzduzO///u/nxBNPzKxZs7LvvvvmhRdeSFNTU/7yL/8y\nH/nIR3p7JG/R1Rntueee+ed//udcdtllefTRR/Pd7343X/7yl7N8+fIsXLgwZ5xxRr7+9a+nubk5\nra2tmThxYg4++OBcdNFFOfDAA7N69eo0NDRkyJAhWbZsWWpra/NXf/VXee2113Lbbbdl27Zt2bRp\nU/7kT/4kY8aMycUXX5zf/u3fzqpVq1JVVZVLL710h29Z6Q59MqJefvnlDBs2rOPy9ddf3/Gi3n33\n3TuuHzhwYC699NLeWGJFOOqoo/L444/n+OOPz8qVK3PKKafklVdeyebNm3PllVemuro6c+bMyXPP\nPZfnn38++++/f84444wsX748TU1N+cxnPpMFCxbkc5/7XL7//e9n8ODBmTp1ajZv3pyZM2fmK1/5\nSlpaWvJHf/RH+ehHP9rbD/d98XYzffXVVzu2//jHP86f//mfZ8SIEfn+97+f1tbWPProozn55JMz\nduzYLFy40DcD/IZ3muf69evzpS99KYMHD+7tJVac9zKzr3zlK33iNfff//3fmTVrVl577bVUV1fn\nE5/4RIYOHZqPfexjmTJlSrZu3ZqpU6dm4sSJSX51VOakk07K0qVL8/LLL2f27NnZunVrLr/88hxy\nyCFJfvUP8j/7sz/LnDlz8qEPfShXXnllbr755vzsZz/L7rvvnnHjxuWoo47Khg0bMmvWrJx44okd\nv3f22Wfn29/+dh599NH84R/+Ya/N5Td154xmzZqVV155Jdu2bcvSpUtTVVWVTZs25YknnshRRx2V\n+fPn55BDDsmECROyYcOGjtm1tLTk2GOPzQEHHJALL7wwZ555ZiZOnJiZM2fml7/8ZV5//fV8+tOf\nzkEHHZRnnnkm//Iv/5IxY8akubk548aNy6RJk3LTTTdl6dKlHUdhu0ufjKjddttthy9SfjOULr/8\n8h0+C9Wt3/H3AXTsscdm3rx5GTp0aA444IAkSVVVVWpra3PjjTdmwIABWb9+fVpbW/O7v/u7ueee\ne/LFL34x9fX1Oe2003bY1+rVq7Ns2bI899xzSZLW1ta8/vrrSfrWnN9upr9p6tSpue+++3LHHXdk\n5MiRaW9vz5lnnpm77747CxYsSGNjY4488sheWHlleqd5Dh48WEC9g/cys77ymnvzrarNmzfn2muv\nzR577JFBgwZl5cqVefrpp1NXV5dt27Z13P7N/1atXr06P//5zzs+/tHa2ppXXnklSTr+QThw4MAM\nHz48STJo0KBs27YtQ4YMyQMPPJDHH3889fX1aW1t7dj3vvvum+RX//+0adOmnn7o71l3z+jQQw/N\n008/nfXr1+e4447LU089lWXLlmXixIlZsGBBjjvuuCTJrrvumvr6+rz22mtJkv322y/JjnMdOHBg\ntm7dml122SXz58/Pj370o1RVVe0w1zefj912222HdXaXnfv47Ds48sgj89RTT2XFihUd161bty7r\n16/f4ahAVVVVbyyvYgwdOjQtLS154IEHOl7Yzc3NWbx4caZPn55Jkyalvb097e3teeKJJ3LggQfm\nqquuytixY3PPPffssK+GhoaMGzcus2bNyhe+8IUcffTRGTRoUJK+Nee3m+lv+uEPf5jJkyfn6quv\nzvPPP58VK1bk3/7t3/LHf/zHufrqq5Mk//Ef//F+L7tivdM8+9Jr6v/qvcysr73mBg8enPPPP7/j\nj43q6+tzwQUX5NOf/nTeeOONvHlO6jff0mxsbMxBBx2UWbNm5aqrrsrRRx+doUOHJnn31959992X\nkSNH5oILLsjYsWPzm+e6rvTXbHfNaMyYMbn77ruzzz775NBDD82DDz6YYcOGpba2No2NjVm2bFmS\nZMOGDdmyZct7+sfQXXfdld/5nd/J+eefn4MOOijv5znE++SRqAEDBmTGjBn51re+lTvvvDNtbW2p\nrq7OWWedlSVLlvT28irKMccck0ceeSQNDQ15+eWXU11d3XGIOkmGDBmSjRs35mMf+1jmzp3b8RVA\nZ511VpJk+PDhuemmmzJ16tTceuutmTlzZpqbm3PiiSfu9J+xeCf//0x/0957752ZM2dmwIAB2XXX\nXTNixIg0NTXlr//6r1NXV5cBAwbk8MMP76WVV6Z3mydvr7OZjRgxos+95oYPH54/+IM/yPPPP58X\nX3wxzz77bGpra7Pnnntm48aNO9z28MMPz9NPP52rrroqLS0tGTNmTOrq6jq9j8MPPzx///d/n0cf\nfTQDBw5MTU1Njxwd6SndMaORI0dm7dq1Ofnkk7PPPvvk1VdfzSmnnJIk+cxnPpO/+Zu/yeOPP56t\nW7fm3HPPTU1NTafrGjt2bO64447cfffd2XXXXbN58+Yeefxvx9e+AAAU6JuHAgAAukhEAQAUEFEA\nAAVEFABAAREFAFCgT57iAPhg+Lu/+7uO88b88pe/zB577JH+/fsnSbZu3ZovfvGLqaqqyg033JCZ\nM2cmSU499dTMmzcvH/7wh3tt3UDfIKKAijVp0qSOn//iL/4iF1xwQfbff/8dbvPyyy93nAkf4P3k\n7TzgA+nUU0/N66+/nltuuSVbt27NJZdckra2th1u86Mf/SgzZszIpZdemtmzZ2fNmjW9tFpgZySi\ngA+0qVOnpn///rnhhht2OAv+z372syxcuDDXXHNNrr/++px88sn58pe/3IsrBXY23s4DdkpLlizJ\nunXrcsUVV3Rct2XLlmzZsqXjexsBukJEATultra2HHfccTnjjDM6Lm/cuDEDBw7s5ZUBOwtv5wEf\naDU1NWlra3vLN7cfcsghefTRRzu+GPUHP/hBrrnmmt5YIrCTciQK+EDbZZddst9++2X69OmZPXt2\nx/WjR4/OKaeckmuvvTZVVVWpq6vLxRdfnKqqql5cLbAzqWr////5BgBAp7ydBwBQQEQBABQQUQAA\nBUQUAEABEQUAUEBEAQAUEFEAAAX+H+0BYoe6xMTRAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xc4a3fd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "full.groupby(['Title'])[['Title','Survived']].mean().plot(kind='bar',figsize=(10,7))\n",
    "plt.xticks(rotation=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__The 'Rarewoman' has 100% survival rate, that's amazing!!__"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__It's natural to assume that 'Pclass' also plays a big part, as we can see from the plot below. The females in class 3 have a survival rate of about 50%, while survival rateof females from class1/2 are much higher.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2UAAAHgCAYAAAAllMURAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3X9YlHW+//HXzADyQ1y1FnEIl7g4oYA/WPci3K22FG01\na6/LOtvoerw0sk6trknbiuYPQC052Y+rRANNRXS1dRW3s9meltKjZ/fq1Owh4cuSlaxmYivmDyJA\nGJjvH13ORpgz4MA9wzwffzn3Pdzzvuee3s1rPvf9uU1Op9MpAAAAAIAhzEYXAAAAAACBjFAGAAAA\nAAYilAEAAACAgQhlAAAAAGAgQhkAAAAAGIhQBgAAAAAGIpQBAAAAgIEIZQAAAABgIEIZAAAAABiI\nUAYAAAAABgoyugAjnbzrB17dXuzrdrfPOX/+vJ5//nk99NBDmjVrlt5+++1uv96PfvQj/fnPf77i\nur179+rdd9/VmjVrrrh+/Pjx2rZtm2644Qa9+uqreu2112Q2m9Xa2qqFCxfq5ptvVnZ2tqZMmaLb\nbrut2zV+3Z/+9Cf98Y9/1LPPPitJSkxM1NGjR/Xiiy9qypQpSkhI8MrrAH0B/al3+tMXX3yhJ554\nQg0NDWptbVV2drZSU1PpT8C3oDf1Tm9qbGzU448/rvr6egUHBys/P19DhgyhN/VhAR3KjPDCCy9o\nxowZGjx4sKKjo3vsda6//npFRUV96/ohQ4bouuuu0+uvv64///nP2rp1q4KDg3Xy5EnNnDlTpaWl\nXq1n1apV+p//+R+NGDHCtSwpKUmSNHv2bD3++OPauHGjV18TQNcEYn/asmWL0tPTNXv2bNXU1Ojx\nxx9XaWkp/QnwIYHYm377298qOTlZ8+bN0969e7Vx40YtXbqU3tSHEcp6UUNDgyorK5WbmytJevHF\nFyVJEydOVGpqqo4fP65x48bpiy++UEVFhW688UY988wz+vDDD7VmzRq1tbXp/PnzysnJ0fe//33X\ndo8ePapVq1ZJkgYOHKinnnpK6enpGjNmzLfW8tJLLyksLEy7du3S4sWLFRwcLEmKjY3Vvn37NGjQ\noA51P/nkk/riiy905swZzZgxQzNmzNCOHTu0b98+mc1mjRw5UkuXLtWbb76pjRs3KigoSFFRUXr+\n+edlNpv1/e9/XxkZGXr11Vdd273cSAYMGKDQ0FB98MEHGj58uJfebQBdEaj9afbs2QoJCZEktbW1\nqV+/fpLoT4CvCOTe1NbWJkmqra3VgAEDJNGb+jKuKetF77//vm688UbX4+uvv16SdOrUKT322GPa\nsWOHtm3bphkzZmj37t3661//qvr6en388cdatGiRiouLNXfuXO3du7fDdpctW6YVK1aopKREt912\nmzZt2qSQkBDXf8BXcvm1z5w5o9jY2A7rvt5UJOnEiRO66667tHnzZr3yyivaunWrpK+G+ZctW6ZX\nX31V8fHxcjgc+sMf/qDMzEzt3LlTd9xxhxoaGiRJU6ZMkclkumIN0lenMr777ruevI0AekCg9qfL\nX2zq6ur0xBNPKCsrq0MNEv0JMFKg9iZJslgsmjVrlrZv366JEyd2qEGiN/U1jJT1ovPnz3f4j+my\ngQMHymq1SpLCw8Nd5wdHRkbq0qVLioqK0vr16xUaGqovv/xS/fv37/D3x44dc/2C1Nraqri4OI9r\niomJ0enTpxUZGeladvjwYSUmJroeX3/99SouLtabb76p/v37y+FwSJKefvppbd68Wf/xH/+hMWPG\nyOl0avHixSosLNT27dsVHx+vjIwMj+r47ne/q3/84x8e1w3AuwK5Px09elRZWVn69a9/rbS0tE51\n0J8A4wRyb5Kkbdu26dixY3r44YdVVlbWoQ56U9/CSFkvuu6661RfX99p+TdHkL5p9erV+uUvf6n8\n/HzddNNNcjqdHdbfeOONys/PV0lJiZ544gndfvvtHtd07733av369a5m8fe//11Lly6VxWJxPWfz\n5s0aM2aM1q5dq5/85Ceu1//tb3+r3Nxcbd++XdXV1SovL9err76q+fPna/v27ZK+mtzDExcvXtR1\n113ncd0AvCtQ+9PHH3+sBQsW6Nlnn9WPf/zjK9ZBfwKME6i9qbCwUPv27ZMkRUREdNj2ZfSmvoWR\nsl40evRorV27tst/d88992jBggUaMGCAoqOjdf78+Q7rc3JytGjRIjkcDplMJq1evbrD+n/7t39T\nSUnJFbd91113qa6uTjNmzFBwcLDa2tr0zDPPdPiP/I477tCqVau0f/9+RUZGymKxqKWlRYmJiZox\nY4YiIiI0ZMgQjR49Wg0NDXr44YcVERGh8PBwj5tcRUWFFi5c2LU3BoDXBGp/WrJkiVpaWlx19e/f\nXxs2bOhQB/0JME6g9qa2tjYtWrRIe/bsUVtbm5566qlOddCb+haT85s/HaBHLV++XDabzTV7Tm9Y\n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\n0J/wTfQm+AJ6E76J3tQ9hLKvCQ8P19mzZ3XgwAGNGTNGcXFxeuqpp5STk6O5c+cqJiZGb775pi5c\nuKDbb79d+fn5ioyMVGpqqg4ePKjnnntOJpNJr7zyikaOHKn9+/dr7ty5eumll5SVlaWoqCi98847\nqq6u1v33368NGzaooaFBkjRnzhwNGzZMf/zjH/X2229r0KBBunjxosHvCL4pNDRUEydO1DvvvKO/\n/OUvqq6uVnt7u6ZOnapx48bpb3/7m3bv3i2n06nm5mb98pe/lNVq1c6dO/X+++/ruuuuU319vdG7\nAT9Ef8LV0JtgFHoTrobe5DlC2dcMHjxYv/71r/XHP/5Ru3fvVr9+/WSz2b71+RcuXFB+fr6CgoJU\nU1Oj6upq/cu//Iuqqqo0e/Zs7d+/X5I0fvx4HTp0SPfdd58OHDign//859q7d69GjhypSZMm6fTp\n01q/fr0ef/xxvfHGG1q7dq1MJpOys7N7a9fRBd/5znf0n//5n7rxxhu1cuVKtbS06Mknn9SoUaN0\n8uRJzZ8/X4MHD9bevXv1zjvvaPTo0aqurtbTTz+t5uZmLViwwOhdgB+iP8EdehOMQG+CO/QmzxDK\nvuazzz5TeHi4Hn30UUnSsWPH9NRTT33redFRUVEKCvrqLZwwYYL++7//WxcuXNAPfvADWSwW1/Nu\nueUWLV++XOPHj1dTU5OGDRumkydPqqqqSn/5y18kSQ0NDfrHP/6hG264QcHBwZKkhISEntxddFNd\nXZ1uvfVWHTp0SJcvyWxra1NdXZ0GDx6sLVu2KDQ0VOfOnVNiYqJOnz6t+Ph4mc1mhYeHa9iwYcbu\nAPwS/Qnu0JtgBHoT3KE3eYbZF7/mxIkTeuWVV+RwOCRJQ4cOVUREhCIjI3X+/HlJUk1Njev5ZvM/\n376RI0fq+PHjOnDggMaPH99hu+Hh4YqPj1dxcbFuv/12SZLVatVdd92lnJwcLVy4ULfeequGDh2q\nTz/9VC0tLWpvb9ff//73Ht5jdFVjY6PeeusthYeHKzk5WTk5OVq+fLnGjRunIUOGqLCwUI8++qh+\n8YtfuP6HdMMNN+jYsWNqb29Xc3OzPv30U4P3Av6I/oSroTfBKPQmXA29yXOMlH3NzTffrFOnTmnx\n4sUKDQ1Ve3u7Zs6cqaCgIL3yyiu6/vrrv/WXH5PJpJtvvlmVlZWKjo7utH7ChAl66qmn9Mgjj0iS\npk2bpg0bNqisrExNTU3613/9Vw0YMEA//elPtXTpUg0YMEChoaE9ur/wzP/7f/9POTk5MpvNamtr\n089+9jOlpaVp27ZtWr58uZqbm5WWlqawsDDdeuutWr58uUJDQ/Wd73xH586dU1xcnMaMGaPFixdr\n0KBBGjBggNG7BD9Ef8I30ZvgC+hN+CZ6U/eYnE6n0+giAAAAACBQcfoiAAAAABiIUAYAAAAABiKU\nAQAAAICBCGUAAAAAYCBCGQAAAAAYiFAGAAAAAAYilAEAAACAgQhlAAAAAGAgQhkAAAAAGIhQBgAA\nAAAGIpQBAAAAgIEIZQAAAABgIEIZAAAAABgoyOgCetLJu37g1e3Fvm53+5zz58/r+eef10MPPaRZ\ns2bp7bff1vbt27Vjxw7Nnz9fU6ZM8Vo92dnZmjJlim677bYrrk9MTNTRo0evuO6ll16SJM2fP18f\nffSRnnnmGTU1NamxsVE//vGPNX/+fL377rvatWuXnn/+ea/Ue+7cOU2fPl2vvfaa+vXrp+zsbKWl\npSk5OVl/+tOfNG/ePK+8DuDr6E2+05u2bt2q119/XZL04x//WPPmzaM3IaDRn3ynP+3YsUN79+6V\nyWTSAw88oClTptCf+rA+HcqM8MILL2jGjBkaPHiwoqOjJUlvvvmmXnjhBSUmJvZqLUlJSd+67vrr\nr5fZbFZ9fb2ysrL00ksvKS4uTm1tbVqwYIF27dql+Ph4r9Vy+PBhPfvss6qrq+tQQ1RUlBITE7Vp\n0yZ98sknGjZsmNdeE8A/0Zs6O3nypF577TXt3r1bZrNZ06dPV0ZGBr0J6GX0p87OnTunnTt3qrS0\nVJcuXdJdd92lyZMn05/6MEKZFzU0NKiyslK5ubmSpBdffFGvvvqq/va3v+nJJ5/U888/r4MHD+oP\nf/iDTCaTpkyZolmzZik7O1tBQUGqra1VS0uLpkyZogMHDuj06dNav369YmJitHz5cn322Wc6c+aM\nxo8fr4ULF7pet7W1VStWrNCJEyfU3t6uxx57TDfffLM2btz4rbX+9Kc/lST913/9l26++WbFxcVJ\nkiwWi/Lz8xUcHKzy8nLX87dv364333xTTU1NGjRokNatW6dTp05p8eLFCgoKUnt7u5599ln169dP\njz32mJxOpy5duqTc3FyNGDFCZrNZW7Zs0b333uva5kMPPaTQ0FBJ0uTJk7Vjxw4tXrzYa8cDwFfo\nTVfuTQkJCdq0aZMsFoskyeFwqF+/fvQmoBfRn779u9O+ffsUFBSkU6dOqV+/fjKZTPSnPoxryrzo\n/fff14033uh6fP311+v+++/XiBEjlJ+fr0uXLmn//v36zW9+ox07dqisrEw1NTWSpJiYGG3evFnx\n8fH69NNPtXHjRk2aNElvv/22Tp8+rTFjxuiVV17R7373O+3atavD6+7evVuDBg3Sjh07tH79euXl\n5ble/9uEh4crPDxcZ86cUWxsbId1ERERCgkJcT1ub2/XhQsXtHXrVu3evVttbW2qrKzUX/7yF40a\nNUpbtmzR/Pnz9cUXX6iiokIDBw7Uxo0btXz5cjU2NkqSfvSjH2nQoEEdXmfAgAGu10lMTNS7777b\n1bccgAfoTVfuTcHBwRo8eLCcTqfy8/OVlJSkG2+8kd4E9CL607d/dwoKCtL27dt1//3365577pHE\nd6e+jJEyLzp//vxV/2P+8MMPVVtbq9mzZ0uSLl68qBMnTkj653D5gAEDXEPfAwYMUEtLiwYOHKjK\nykq988476t+/v1paWjpt969//asqKiokffVr77lz5zR48GC3NVutVv3tb3/rsOzkyZP67LPPXI/N\nZrOCg4OVlZWl8PBwffbZZ3I4HLrvvvu0ceNGPfjgg4qMjNTChQt122236fjx43r00UcVFBSkRx55\nxG0NkvTd735XFy5c8Oi5ALqG3vTtvenSpUtasmSJIiIitGLFik510JuAnkV/uvp3p5kzZ+pnP/uZ\n5s6dq3feeUfp6emudfSnvoWRMi+67rrrVF9f/63r4+PjlZCQoG3btqmkpETTpk1znSttMpm+9e/2\n7t2ryMhIPfvss3rggQfU3Nwsp9PZYbt33XWXSkpKtHHjRv3kJz/RwIEDPar5jjvu0OHDh/XJJ59I\n+mo4f82aNfrwww9dz/nggw9UVlamF154QcuWLVN7e7ucTqfeeustjR07VsXFxfrJT36iTZs26X//\n938VFRWlzZs365FHHtFzzz3nUR319fUeNUIAXUdvunJvcjqdevTRR5WYmKi8vDzXaYxfR28Cehb9\n6cr9qaamRvPmzZPT6VRwcLBCQkJkNnf82k5/6lsYKfOi0aNHa+3atd+6fvjw4Ro3bpymT5+ulpYW\njRo1SkOGDHG73XHjxunxxx/X+++/r5CQEH3ve9/TmTNnXOttNpuWLl2qmTNnqqGhQTNmzOjwH25R\n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\nAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xb70e2b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,axes=plt.subplots(2,3,figsize=(15,8))\n",
    "Sex1=['male','female']\n",
    "for i,ax in zip(Sex1,axes):\n",
    "    for j,pp in zip(range(1,4),ax):\n",
    "        PclassSex=full[(full.Sex==i)&(full.Pclass==j)]['Survived'].value_counts().sort_index(ascending=False)\n",
    "        pp.bar(range(len(PclassSex)),PclassSex,label=(i,'Class'+str(j)))\n",
    "        pp.set_xticks((0,1))\n",
    "        pp.set_xticklabels(('Survived','Dead'))\n",
    "        pp.legend(bbox_to_anchor=(0.6,1.1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Feature Engeneering"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# create age bands\n",
    "full.AgeCut=pd.cut(full.Age,5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# create fare bands\n",
    "full.FareCut=pd.qcut(full.Fare,5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.0902, 16.136]    152\n",
       "(16.136, 32.102]    564\n",
       "(32.102, 48.068]    473\n",
       "(48.068, 64.034]    107\n",
       "(64.034, 80]         13\n",
       "Name: Age, dtype: int64"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full.AgeCut.value_counts().sort_index()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0, 7.854]           275\n",
       "(7.854, 10.5]        255\n",
       "(10.5, 21.558]       255\n",
       "(21.558, 41.579]     265\n",
       "(41.579, 512.329]    259\n",
       "Name: Fare, dtype: int64"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full.FareCut.value_counts().sort_index()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# replace agebands with ordinals\n",
    "full.loc[full.Age<=16.136,'AgeCut']=1\n",
    "full.loc[(full.Age>16.136)&(full.Age<=32.102),'AgeCut']=2\n",
    "full.loc[(full.Age>32.102)&(full.Age<=48.068),'AgeCut']=3\n",
    "full.loc[(full.Age>48.068)&(full.Age<=64.034),'AgeCut']=4\n",
    "full.loc[full.Age>64.034,'AgeCut']=5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "full.loc[full.Fare<=7.854,'FareCut']=1\n",
    "full.loc[(full.Fare>7.854)&(full.Fare<=10.5),'FareCut']=2\n",
    "full.loc[(full.Fare>10.5)&(full.Fare<=21.558),'FareCut']=3\n",
    "full.loc[(full.Fare>21.558)&(full.Fare<=41.579),'FareCut']=4\n",
    "full.loc[full.Fare>41.579,'FareCut']=5"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__We can see from the plot that 'FareCut' has a big impact on survial rate.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0xc97ef28>"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nBgDAkP8HZhTFa5kHlnsAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xc96e198>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "full[['FareCut','Survived']].groupby(['FareCut']).mean().plot.bar(figsize=(8,5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Parch</th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Survived</th>\n",
       "      <th>AgeCut</th>\n",
       "      <th>FareCut</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Age</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.153051</td>\n",
       "      <td>-0.161843</td>\n",
       "      <td>0.026528</td>\n",
       "      <td>-0.361790</td>\n",
       "      <td>-0.259798</td>\n",
       "      <td>-0.077692</td>\n",
       "      <td>0.939760</td>\n",
       "      <td>0.129070</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fare</th>\n",
       "      <td>0.153051</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.221668</td>\n",
       "      <td>0.031029</td>\n",
       "      <td>-0.558740</td>\n",
       "      <td>0.160388</td>\n",
       "      <td>0.257307</td>\n",
       "      <td>0.135191</td>\n",
       "      <td>0.603698</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Parch</th>\n",
       "      <td>-0.161843</td>\n",
       "      <td>0.221668</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.008942</td>\n",
       "      <td>0.018322</td>\n",
       "      <td>0.373587</td>\n",
       "      <td>0.081629</td>\n",
       "      <td>-0.159184</td>\n",
       "      <td>0.337256</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PassengerId</th>\n",
       "      <td>0.026528</td>\n",
       "      <td>0.031029</td>\n",
       "      <td>0.008942</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.038354</td>\n",
       "      <td>-0.055224</td>\n",
       "      <td>-0.005007</td>\n",
       "      <td>0.017900</td>\n",
       "      <td>-0.003346</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Pclass</th>\n",
       "      <td>-0.361790</td>\n",
       "      <td>-0.558740</td>\n",
       "      <td>0.018322</td>\n",
       "      <td>-0.038354</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.060832</td>\n",
       "      <td>-0.338481</td>\n",
       "      <td>-0.328087</td>\n",
       "      <td>-0.720881</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SibSp</th>\n",
       "      <td>-0.259798</td>\n",
       "      <td>0.160388</td>\n",
       "      <td>0.373587</td>\n",
       "      <td>-0.055224</td>\n",
       "      <td>0.060832</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.035322</td>\n",
       "      <td>-0.256077</td>\n",
       "      <td>0.351834</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Survived</th>\n",
       "      <td>-0.077692</td>\n",
       "      <td>0.257307</td>\n",
       "      <td>0.081629</td>\n",
       "      <td>-0.005007</td>\n",
       "      <td>-0.338481</td>\n",
       "      <td>-0.035322</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.103700</td>\n",
       "      <td>0.318206</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AgeCut</th>\n",
       "      <td>0.939760</td>\n",
       "      <td>0.135191</td>\n",
       "      <td>-0.159184</td>\n",
       "      <td>0.017900</td>\n",
       "      <td>-0.328087</td>\n",
       "      <td>-0.256077</td>\n",
       "      <td>-0.103700</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.091607</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FareCut</th>\n",
       "      <td>0.129070</td>\n",
       "      <td>0.603698</td>\n",
       "      <td>0.337256</td>\n",
       "      <td>-0.003346</td>\n",
       "      <td>-0.720881</td>\n",
       "      <td>0.351834</td>\n",
       "      <td>0.318206</td>\n",
       "      <td>0.091607</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  Age      Fare     Parch  PassengerId    Pclass     SibSp  \\\n",
       "Age          1.000000  0.153051 -0.161843     0.026528 -0.361790 -0.259798   \n",
       "Fare         0.153051  1.000000  0.221668     0.031029 -0.558740  0.160388   \n",
       "Parch       -0.161843  0.221668  1.000000     0.008942  0.018322  0.373587   \n",
       "PassengerId  0.026528  0.031029  0.008942     1.000000 -0.038354 -0.055224   \n",
       "Pclass      -0.361790 -0.558740  0.018322    -0.038354  1.000000  0.060832   \n",
       "SibSp       -0.259798  0.160388  0.373587    -0.055224  0.060832  1.000000   \n",
       "Survived    -0.077692  0.257307  0.081629    -0.005007 -0.338481 -0.035322   \n",
       "AgeCut       0.939760  0.135191 -0.159184     0.017900 -0.328087 -0.256077   \n",
       "FareCut      0.129070  0.603698  0.337256    -0.003346 -0.720881  0.351834   \n",
       "\n",
       "             Survived    AgeCut   FareCut  \n",
       "Age         -0.077692  0.939760  0.129070  \n",
       "Fare         0.257307  0.135191  0.603698  \n",
       "Parch        0.081629 -0.159184  0.337256  \n",
       "PassengerId -0.005007  0.017900 -0.003346  \n",
       "Pclass      -0.338481 -0.328087 -0.720881  \n",
       "SibSp       -0.035322 -0.256077  0.351834  \n",
       "Survived     1.000000 -0.103700  0.318206  \n",
       "AgeCut      -0.103700  1.000000  0.091607  \n",
       "FareCut      0.318206  0.091607  1.000000  "
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full.corr()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__We haven't gererate any feature from 'Parch','Pclass','SibSp','Title', so let's do this by using pivot table.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Title</th>\n",
       "      <th>Pclass</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">Rarewoman</th>\n",
       "      <th>2</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">Master</th>\n",
       "      <th>1</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Girl</th>\n",
       "      <th>2</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Miss</th>\n",
       "      <th>1</th>\n",
       "      <td>0.977273</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mrs</th>\n",
       "      <th>1</th>\n",
       "      <td>0.976190</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Miss</th>\n",
       "      <th>2</th>\n",
       "      <td>0.920000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mrs</th>\n",
       "      <th>2</th>\n",
       "      <td>0.902439</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Miss</th>\n",
       "      <th>3</th>\n",
       "      <td>0.552239</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mrs</th>\n",
       "      <th>3</th>\n",
       "      <td>0.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Girl</th>\n",
       "      <th>1</th>\n",
       "      <td>0.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rareman</th>\n",
       "      <th>1</th>\n",
       "      <td>0.416667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Girl</th>\n",
       "      <th>3</th>\n",
       "      <td>0.400000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Master</th>\n",
       "      <th>3</th>\n",
       "      <td>0.392857</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">Mr</th>\n",
       "      <th>1</th>\n",
       "      <td>0.345794</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.112853</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.082474</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rareman</th>\n",
       "      <th>2</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  Survived\n",
       "Title     Pclass          \n",
       "Rarewoman 2       1.000000\n",
       "          1       1.000000\n",
       "Master    1       1.000000\n",
       "          2       1.000000\n",
       "Girl      2       1.000000\n",
       "Miss      1       0.977273\n",
       "Mrs       1       0.976190\n",
       "Miss      2       0.920000\n",
       "Mrs       2       0.902439\n",
       "Miss      3       0.552239\n",
       "Mrs       3       0.500000\n",
       "Girl      1       0.500000\n",
       "Rareman   1       0.416667\n",
       "Girl      3       0.400000\n",
       "Master    3       0.392857\n",
       "Mr        1       0.345794\n",
       "          3       0.112853\n",
       "          2       0.082474\n",
       "Rareman   2       0.000000"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full[full.Survived.notnull()].pivot_table(index=['Title','Pclass'],values=['Survived']).sort_values('Survived',ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Title</th>\n",
       "      <th>Parch</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Rarewoman</th>\n",
       "      <th>0</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Master</th>\n",
       "      <th>0</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">Miss</th>\n",
       "      <th>1</th>\n",
       "      <td>0.875000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.857143</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"4\" valign=\"top\">Mrs</th>\n",
       "      <th>0</th>\n",
       "      <td>0.855072</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.812500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.769231</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.750000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Girl</th>\n",
       "      <th>0</th>\n",
       "      <td>0.750000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Miss</th>\n",
       "      <th>0</th>\n",
       "      <td>0.736842</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Girl</th>\n",
       "      <th>1</th>\n",
       "      <td>0.650000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">Master</th>\n",
       "      <th>1</th>\n",
       "      <td>0.608696</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rareman</th>\n",
       "      <th>0</th>\n",
       "      <td>0.384615</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Girl</th>\n",
       "      <th>2</th>\n",
       "      <td>0.363636</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mrs</th>\n",
       "      <th>5</th>\n",
       "      <td>0.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"5\" valign=\"top\">Mr</th>\n",
       "      <th>0</th>\n",
       "      <td>0.157447</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.147059</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.133333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">Mrs</th>\n",
       "      <th>4</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rareman</th>\n",
       "      <th>1</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mr</th>\n",
       "      <th>3</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 Survived\n",
       "Title     Parch          \n",
       "Rarewoman 0      1.000000\n",
       "Master    0      1.000000\n",
       "Miss      1      0.875000\n",
       "          2      0.857143\n",
       "Mrs       0      0.855072\n",
       "          1      0.812500\n",
       "          2      0.769231\n",
       "          3      0.750000\n",
       "Girl      0      0.750000\n",
       "Miss      0      0.736842\n",
       "Girl      1      0.650000\n",
       "Master    1      0.608696\n",
       "          2      0.500000\n",
       "Rareman   0      0.384615\n",
       "Girl      2      0.363636\n",
       "Mrs       5      0.250000\n",
       "Mr        0      0.157447\n",
       "          1      0.147059\n",
       "          2      0.133333\n",
       "          4      0.000000\n",
       "          5      0.000000\n",
       "Mrs       4      0.000000\n",
       "          6      0.000000\n",
       "Rareman   1      0.000000\n",
       "Mr        3      0.000000"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full[full.Survived.notnull()].pivot_table(index=['Title','Parch'],values=['Survived']).sort_values('Survived',ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### _From the pivot tables above, there is definitely a relationship among 'Survived','Title','Pclass','Parch'. So we can combine them together._"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Title</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Parch</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Rarewoman</th>\n",
       "      <th>2</th>\n",
       "      <th>0</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Master</th>\n",
       "      <th>3</th>\n",
       "      <th>0</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">Mrs</th>\n",
       "      <th>1</th>\n",
       "      <th>1</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">2</th>\n",
       "      <th>2</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">Miss</th>\n",
       "      <th rowspan=\"2\" valign=\"top\">2</th>\n",
       "      <th>2</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mrs</th>\n",
       "      <th>1</th>\n",
       "      <th>0</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Miss</th>\n",
       "      <th>1</th>\n",
       "      <th>1</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Girl</th>\n",
       "      <th>2</th>\n",
       "      <th>1</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">Master</th>\n",
       "      <th rowspan=\"2\" valign=\"top\">2</th>\n",
       "      <th>2</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rarewoman</th>\n",
       "      <th>1</th>\n",
       "      <th>0</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Girl</th>\n",
       "      <th>2</th>\n",
       "      <th>2</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Miss</th>\n",
       "      <th>1</th>\n",
       "      <th>0</th>\n",
       "      <td>0.966667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mrs</th>\n",
       "      <th>2</th>\n",
       "      <th>1</th>\n",
       "      <td>0.909091</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Miss</th>\n",
       "      <th>2</th>\n",
       "      <th>0</th>\n",
       "      <td>0.904762</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mrs</th>\n",
       "      <th>2</th>\n",
       "      <th>0</th>\n",
       "      <td>0.869565</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Girl</th>\n",
       "      <th>3</th>\n",
       "      <th>0</th>\n",
       "      <td>0.750000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">Mrs</th>\n",
       "      <th rowspan=\"2\" valign=\"top\">3</th>\n",
       "      <th>2</th>\n",
       "      <td>0.666667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.611111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Miss</th>\n",
       "      <th>3</th>\n",
       "      <th>0</th>\n",
       "      <td>0.571429</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Girl</th>\n",
       "      <th>3</th>\n",
       "      <th>1</th>\n",
       "      <td>0.533333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">Mrs</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <td>0.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <th>3</th>\n",
       "      <td>0.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Girl</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <td>0.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rareman</th>\n",
       "      <th>1</th>\n",
       "      <th>0</th>\n",
       "      <td>0.454545</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mrs</th>\n",
       "      <th>3</th>\n",
       "      <th>1</th>\n",
       "      <td>0.444444</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Master</th>\n",
       "      <th>3</th>\n",
       "      <th>1</th>\n",
       "      <td>0.437500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">Mr</th>\n",
       "      <th rowspan=\"2\" valign=\"top\">1</th>\n",
       "      <th>2</th>\n",
       "      <td>0.400000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.352273</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Miss</th>\n",
       "      <th>3</th>\n",
       "      <th>2</th>\n",
       "      <td>0.333333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mr</th>\n",
       "      <th>1</th>\n",
       "      <th>1</th>\n",
       "      <td>0.307692</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Master</th>\n",
       "      <th>3</th>\n",
       "      <th>2</th>\n",
       "      <td>0.272727</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mrs</th>\n",
       "      <th>3</th>\n",
       "      <th>5</th>\n",
       "      <td>0.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Girl</th>\n",
       "      <th>3</th>\n",
       "      <th>2</th>\n",
       "      <td>0.187500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"4\" valign=\"top\">Mr</th>\n",
       "      <th>3</th>\n",
       "      <th>0</th>\n",
       "      <td>0.118644</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <th>0</th>\n",
       "      <td>0.091954</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <th>1</th>\n",
       "      <td>0.071429</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <th>4</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Miss</th>\n",
       "      <th>3</th>\n",
       "      <th>1</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">Mr</th>\n",
       "      <th>2</th>\n",
       "      <th>2</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <th>5</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mrs</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mr</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mrs</th>\n",
       "      <th>3</th>\n",
       "      <th>6</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mr</th>\n",
       "      <th>3</th>\n",
       "      <th>3</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">Rareman</th>\n",
       "      <th>1</th>\n",
       "      <th>1</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <th>0</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">Mr</th>\n",
       "      <th>3</th>\n",
       "      <th>2</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <th>1</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                        Survived\n",
       "Title     Pclass Parch          \n",
       "Rarewoman 2      0      1.000000\n",
       "Master    3      0      1.000000\n",
       "Mrs       1      1      1.000000\n",
       "          2      2      1.000000\n",
       "                 3      1.000000\n",
       "Miss      2      2      1.000000\n",
       "                 1      1.000000\n",
       "          1      2      1.000000\n",
       "Mrs       1      0      1.000000\n",
       "Miss      1      1      1.000000\n",
       "Girl      2      1      1.000000\n",
       "Master    2      2      1.000000\n",
       "                 1      1.000000\n",
       "          1      2      1.000000\n",
       "Rarewoman 1      0      1.000000\n",
       "Girl      2      2      1.000000\n",
       "Miss      1      0      0.966667\n",
       "Mrs       2      1      0.909091\n",
       "Miss      2      0      0.904762\n",
       "Mrs       2      0      0.869565\n",
       "Girl      3      0      0.750000\n",
       "Mrs       3      2      0.666667\n",
       "                 0      0.611111\n",
       "Miss      3      0      0.571429\n",
       "Girl      3      1      0.533333\n",
       "Mrs       1      2      0.500000\n",
       "          3      3      0.500000\n",
       "Girl      1      2      0.500000\n",
       "Rareman   1      0      0.454545\n",
       "Mrs       3      1      0.444444\n",
       "Master    3      1      0.437500\n",
       "Mr        1      2      0.400000\n",
       "                 0      0.352273\n",
       "Miss      3      2      0.333333\n",
       "Mr        1      1      0.307692\n",
       "Master    3      2      0.272727\n",
       "Mrs       3      5      0.250000\n",
       "Girl      3      2      0.187500\n",
       "Mr        3      0      0.118644\n",
       "          2      0      0.091954\n",
       "          3      1      0.071429\n",
       "          1      4      0.000000\n",
       "Miss      3      1      0.000000\n",
       "Mr        2      2      0.000000\n",
       "          3      5      0.000000\n",
       "Mrs       3      4      0.000000\n",
       "Mr        3      4      0.000000\n",
       "Mrs       3      6      0.000000\n",
       "Mr        3      3      0.000000\n",
       "Rareman   1      1      0.000000\n",
       "          2      0      0.000000\n",
       "Mr        3      2      0.000000\n",
       "          2      1      0.000000"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# only choose the object with not null 'Survived'.\n",
    "TPP=full[full.Survived.notnull()].pivot_table(index=['Title','Pclass','Parch'],values=['Survived']).sort_values('Survived',ascending=False)\n",
    "TPP"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Annotation at 0xe166400>"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nFQAAgOIprwAAABRPeQUAAKB4yisAAADFU14BAAAonvIKAABA8ZRXAAAAiqe8AgAAUDzlFQAAgOIp\nrwAAABRPeQUAAKB4yisAAADFU14BAAAonvIKAABA8ZRXAAAAiqe8AgAAUDzlFQAAgOIprwAAABRP\neQUAAKB4yisAAADFU14BAAAonvIKAABA8ZRXAAAAiqe8AgAAUDzlFQAAgOIprwAAABSvflcPAFCK\n9okTutxeso196q6f0zvDAADQhZVXAAAAimflFaCKtrd6a+UWAKB7rLwCAABQPOUVAACA4imvAAAA\nFE95BQAAoHjKKwAAAMVTXgEAACie8goAAEDxlFcAAACKp7wCAABQPOUVAACA4imvAAAAFE95BQAA\noHjKKwAAAMVTXgEAACie8goAAEDxlFcAAACKp7wCAABQvPpdPQAAXbVPnNDl9pItttddP6f3hgEA\nKISVVwAAAIqnvAIAAFA85RUAAIDiKa8AAEk2bdqUSy+9NBdeeGG+8IUvZPHixUmSpUuXZsqUKfnC\nF76Q6dOnp6OjI0ly5ZVXZvLkybn77ruTJOvWrctXvvKV93zO3/3ud7njjjt26pgbb7wxc+bs/Pvl\n16xZk1/+8pc7fRzAe0F5BQBIct9996W9vT1XX311zj333Nxwww1JkmuvvTZ//dd/nX/6p39KpVLJ\nQw89lDfffDOrV6/O1VdfnbvuuitJ8oMf/CCTJk16z+c88cQTc8YZZ7znj5MkL730Uh5++OFeeSyA\n7fFpwwAASQ499NB0dHSko6Mj69evT3395r8mzZ8/P8cee2ySzcXxsccey/HHH5/29va0tbWlf//+\nWbZsWVpaWjJ69OgsW7Zsq+y5c+fmuuuuS319fQYMGJBvfetbuf/++7N48eJMmjQpra2tOffcc3Pr\nrbfmL/7iL9LQ0JC1a9emsbExZ555ZsaOHZvnn38+s2bNykc+8pEsXrw4++23X9atW5fzzjsvra2t\nOf/88/PP//zPufHGG7No0aKsXLky73vf+3LxxRdv8/u98cYb88wzz6S5uTlf/epX84tf/CLPP/98\n1qxZkw984AOZMmVKZs+enQULFuSOO+7Ihz70oVx55ZXZuHFjBgwYkKlTp+aAAw547y4IwBasvAIA\nJGlsbMwrr7yS8847L1deeWU+/elPJ0kqlUpqamo691m/fn0aGhpy0kkn5R/+4R9y3nnnZfbs2Tnz\nzDPz7W9/O9dcc02am5u7ZD/00EMZN25cZsyYkU996lNZu3btu87ysY99LFdeeWVOP/30zpcl33XX\nXTn99NM79/n4xz+eX//616lUKnn44Ydz0kknpbW1NYMHD86//uu/ZubMmXn22WezcuXKd3ycUaNG\n5eqrr86wYcMyePDgXHHFFZk5c2aefPLJrFy5Muecc04++MEP5owzzsh1112XT3/605kxY0Y+97nP\n5fvf/363zjNAd1l5BQDI5pXIE044IRMnTsyrr76aL3/5y/mXf/mXzuKaJBs2bMjgwYOTJBMmTMiE\nCRPy9NNPp6mpKY8//niOP/74rF69Or/61a+6FM2zzz47s2fPztSpUzNs2LAcddRRXR67Uql0uT1y\n5MgkyQknnJCZM2dmzZo1mTt3bqZMmZJ77rknSTJkyJAcccQRmTt3bn7+859n8uTJGTBgQN544418\n+ctfTpI0Nzenvb39Hb/ntx7nreMuvfTSNDQ0ZMOGDVsdt3Dhwtxyyy354Q9/mEql0rkyDdBbrLwC\nACTZa6+9MmjQoCSbi2FbW1va29tzxBFH5Mknn0yy+cOSPvCBD3Q57kc/+lE++9nPZuPGjamrq0uS\nrVZe77nnnpxyyimZPn16DjnkkNx5553p379/XnvttSSbX5r8drW1tZ3/HjduXKZPn54Pf/jDnflv\nOe2003L77bentbU1o0aNyiOPPJJXX3013/nOd3L++edn48aNWxXjbT3OW8ddcsklOf/889PS0tK5\n4vzWB1SNGjUqkyZNyowZMzJ16tT86Z/+6Y6fXIAq8L/MAACS/OVf/mUuuuiifOELX8imTZty/vnn\np6GhIZ///OdzxRVXpK2tLaNGjepS2u69996cdNJJGTBgQMaNG5fLLrssbW1tueSSS7pkH3nkkbn8\n8sszcODA1NbWZurUqRkyZEh++tOfZsqUKRk9enRncd7SJz/5yZx11lmZPXv2VtvGjh2b73znOzn7\n7LOTJEcddVRuvvnmnH322WltbU1TU1NWrVq13e/9reO++MUvJtm8Irtq1ao0NTVl4cKFuf3223PB\nBRdk+vTpaW1tTWtray688MIdPrcA1aC8AgAkGTRoUL75zW9udf/IkSNz1VVXbfOYj370o51f77//\n/rn11lu3+YFNRx99dK699tqt7t9W7s0339wl44ADDujy62pOOeWULvvPmjWr8+uhQ4dm5syZaWpq\n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\nAQDgnbRPnNDl9pJt7FN3/ZzeGQYA2KWsvAIAAFA85RUAAIDiKa8AAAAUT3kFAACgeMorAAAAxVNe\nAQAAKJ7yCgAAQPGUVwAAAIpXv6sHAACgq0mTJqWxsTFJctBBB+Xiiy/O0qVL84//+I+pqanJoYce\nmi9+8Yupra3NlVdemQULFuRTn/pUPvGJT2TdunX5yle+ki9/+cvv6Yy/+93vsmLFipxxxhk7fMyN\nN96YoUOHZsKECTv1WGvWrMnvfve7jB8/fmfHBHYjyisAQEE2btyYSqWSGTNmdLn/2muvzV//9V9n\n7Nix+c53vpOHHnooxxxzTFavXp2rr746X/7yl/OJT3wiP/jBDzJp0qT3fM4TTzzxPX+Mt7z00kt5\n+OGHlVfYwymvAAAFmTdvXjZu3JivfvWraW9vz/nnn5+jjz468+fPz7HHHptkc3F87LHHcvzxx6e9\nvT1tbW3p379/li1blpaWlowePTrLli3bKnvu3Lm57rrrUl9fnwEDBuRb3/pW7r///ixevDiTJk1K\na2trzj333Nx///350pe+lH322Sdr165NY2NjzjzzzIwdOzbPP/98Zs2alY985CNZvHhx9ttvv6xb\nty7nnXdeWltbc/755+ef//mfc+WVV+bxxx/PmjVr8r73vS8XX3zxNr/fG2+8Mc8880yam5vz1a9+\nNb/4xS/y/PPPZ82aNfnABz6QKVOmZPbs2VmwYEHuuOOOfOhDH8qVV16ZjRs3ZsCAAZk6dWoOOOCA\n9/SaAGXwnlcAgIIMHDgwn/vc5/K//tf/ykUXXZRp06alvb09lUolNTU1SZLGxsasX78+DQ0NOemk\nk/IP//APOe+88zJ79uyceeaZ+fa3v51rrrkmzc3NXbIfeuihjBs3LjNmzMinPvWprF279l1n+djH\nPpYrr7wyp59+eu6+++4kyV133ZXTTz+9c5+Pf/zj+fWvf51KpZKHH344J510UlpbW7PXXnvliiuu\nyMyZM/Pss89m5cqV7/g4o0aNytVXX51hw4Zl8ODBncc9+eSTWblyZc4555x88IMfzBlnnJHrrrsu\nn/70pzNjxox87nOfy/e///3unmqgj7HyCgBQkEMPPTT9+/dPTU1NRo4cmb322iuvvfZaZ3FNkg0b\nNmTw4MFJkgkTJmTChAl5+umn09TUlMcffzzHH398Vq9enV/96lddiubZZ5+d2bNnZ+rUqRk2bFiO\nOuqoLo9dqVS63B45cmSS5IQTTsjMmTOzZs2azJ07N1OmTMk999yTJBkyZEiOOOKIzJ07Nz//+c8z\nefLkDBgwIK+//nouvfTSNDQ0pLm5Oe3t7e/4Pb/1OAMGDMgbb7zRedyGDRu2Om7hwoW55ZZb8sMf\n/jCVSiX19f46C3sKK68AAAW5/fbbc+211yZJVq1alfXr12e//fbLEUcckSeffDLJ5g9L+sAHPtDl\nuB/96Ef57Gc/m40bN6auri5Jtlp5veeee3LKKadk+vTpOeSQQ3LnnXemf//+ee2115Ik8+fP77J/\nbW1t57/HjRuX6dOn58Mf/nBn/ltOO+203H777Wltbc2oUaPyyCOPZPny5bnkkkty/vnnd76P9528\n9TiPPPJIXn311c7jWlpaOlecOzo6kmxepZ00aVJmzJiRqVOn5k//9E93/OQCfZr/VQUAUJDPfOYz\neeCBBzJlypTU1NTka1/7Wurq6vL5z38+V1xxRdra2jJq1Kgupe3ee+/NSSedlAEDBmTcuHG57LLL\n0tbWlksuuaRL9pFHHpnLL788AwcOTG1tbaZOnZohQ4bkpz/9aaZMmZLRo0dn0KBB25zrk5/8ZM46\n66zMnj17q21vfYjU2WefnSQ56qijcuutt+aLX/xikqSpqSmrVq3a7vd+1FFH5eabb+48buTIkVm1\nalWampqycOHC3H777bngggsyffr0tLa2prW1NRdeeOGOnVigz1NeAQAK0r9//61KZ7K5yF111VXb\nPOajH/1o59f7779/br311m1+YNPRRx/duar7dtvK3fLTjg844ID88pe/7Lx9yimndNk+a9aszq+H\nDh2aH//4x1vNsOVqcZL85V/+ZZfjZs6c2Xm7qampM+Omm27qvP/yyy/fKgfY/XnZMADALlBZX5OO\n9TXb3xGAJMorAEDvaa9J+8qarPnfbXnhijeycWnHrp4IoM/wsmEAdmvtEyd0ub1ki+1118/pvWHY\nY1XW16R1RUdee3hDVv++JfnPzrry3vUZdeiQpN87f5gRAJsprwAAO6O9NqnbgRXT9pq0v56sf2lT\nVvx8fVpXb/2rYtbOa03bqqT+oPdgToDdjPIKALCDOtbVZOOS9jQcWZNs4+2qHR0dm1dZX+3I679t\nzuuPNXeusm5pwP51GX7K4NQOfG9nBthdKK8AADug0lyTV+/akNWPtWTM3w5N7b5ve6lvR03aX0te\n+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\n9Kf4+fmJS8ut5Qyp/LlmzRrWrVvHyMgIRUVFFBcXU1JSIm6TY8kO41ydlZWFWq2msrJy1jaczsTr\nXAQHB4v99MMf/pC+vj7eeecd8XchB5uCpTweHx8v2hgbG0t+fr5dupA6d8kMrrar9V2AqaIUnZ2d\nVFZWUl9fT1BQEPv27QNuJ1Q3NzfGxsYoLS0VH1r37dsnis/SLLFOpxOXpghcttgj4Ec/+hF+fn68\n+OKLJCQk2M1RWlpKY2MjLS0tPPvssxY5rNny05/+FI1Gw8qVK3n22WfNttla0Q+VSkV7ezuZmZkO\nnW/JjrltM/732bNnGRgYoLm5mSeffJLExESH+sRcOzQazaw9v6xxCMs5hONsLZZizuaBgQH+4R/+\ngQ0bNvBXf/VXeHt7o9PpTCZUSxqA298+eXp64ubmZtIuS7baY4clqNVq5HK5yWsK8VpbW0tlZSU5\nOTl8//vfJyAgQGybLXYLxw4ODnL06FFkMhm9vb1ERUXxwgsvmLTLWj/ZEvNzeey1w9S5YF3jguZM\nQTiuvr6ezs5O2tvb2bVrF8HBwXZrFGzPXaZssKUttvBY8qclX5iCpXi1ZpcjvjCGtTxuC59Go+Gl\nl14iMTHRplixBEvHC5/dqFQqBgcHefbZZ8nOzr7jOFvjxJ5rw1eDcnPt+ud//mcGBwfZtm0bjz/+\nuE3XMLZv//79eHh40NDQwOrVq9m1a5dNdluDqfuarfehW7duObyixdw17M3j586do76+nv7+fvbu\n3TsrXm2JNWv6BCTvE0c4pOgTcxwqlYqbN2+KqwQcuW9assnSuMsUrMWKJV9cunSJq1ev0tvbS35+\nPo899pjDto+MjIgF3oRrGvfdfPrT+DolJSV0dnbS09PDo48+SlJSkk12AFy5coWqqioaGxtZs2aN\nU/6wdi1ju9VqNT09PSQnJ9vF3dbWZjaP25JDbYEzuesv4uH13LlzTExMoFAoyM/Pv6PTr1+/Tmdn\nJ0lJSURHR4tBInS+sTjVajWlpaVs3rxZXL5i72z1rVu3+OSTT4iLiyM5OVlcGjOXR6fT8dFHH/Hw\nww8TGBg46xhbOYS/Cd+umDrm5s2bhIaGEhwcLK6NnzuQmJmZ4Ve/+hUrV67k4YcfnuUfWzlMwfi4\n3t5esaqnOZiyQ6VSUVZWxubNm8XZXXM3OYHD09PTpC9sscEUampq+OSTT0hNTRVnpaTClStXqKur\n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\nhQvlcDgkSYcOHVJJSYmcTqemT5+uqVOntuM/AQCA75C8AgCC1tKlS5WWlqacnByv9n///VcXLlxQ\nVlaWunXrpmvXrik3N1e//PJLq8esqKhQcXGxZsyYofLycv3666/avn27oqKidOrUKR09elTjx49v\n7H/27FlNmjRJEydOVH19vTIyMnTlyhUNGjRIp06dUl5enkJCQnTixAmVlJTIbrc32z569Oj3zsvt\nduvMmTOyWq2KiIjQsWPHmh13zJgxqq+vV2JiolavXq36+nqlpqZqyZIlSkhIUFlZmXbu3Nl4zqKj\no/Xjjz/qzp072rhxo6ZMmSKzmY8PAICPj3cfAMAn58qVK6qqqtLGjRsb25xOp5xOp8LDw5v037x5\ns4xGo1wuV+O+0kGDBunkyZMaOXKkoqKiJEnJycmS/t/z6rFgwQJdv35dx44dU2Vlpaqrq1VTU6PI\nyEjZbDatW7dOcXFxio+P1/Dhw+VyuZptb05xcbHWrFkjg8Gguro6DRgwQGlpae8d1+Orr76SJN27\nd09Go1EJCQmSJLvd7rVXNykpSZJks9lUV1en169fy2KxtP+kAwDQQSSvAIBPjsvl0oQJE5SSktL4\ne3V1tXr27Nls/7f3vL7N8xAnj9raWj1+/Nirz44dO9TQ0KBx48YpISFBT548aXztpk2bVFpaqhs3\nbqigoEDDhg3TokWLWmx/17t7XtsyrkdYWJgkyWQyef0N0v8JrecWas/eWU8ft9vd7HgAAHQ2SuUA\nAIKWyWSSy+VqknCNGDFCFy9eVHV1tSTpzz//VFZWVruP73A4dOPGDa/jHDhwwKvPtWvXNGfOHI0b\nN04Gg0ElJSVyuVwqLy9XWlqaBg4cqNmzZys5OVl3795tsb29Whr3XTExMZKk69evS5LKysqUlZVF\nkgoACDhceQUABK3evXvLbrdr1apV2rJlS2N7XFycZs6cqa1bt8pgMKh79+5KT0+XwWBQaWmpdu/e\n3WSfbHNiY2OVkpKibdu2SZJ69eqlpUuXqrKysrHPd999p9zcXIWHh6tbt24aOnSoqqqqNHnyZI0d\nO1YZGRkKCwtTaGioFi1aJJvN1my7JP3222+SpHnz5rU6t5bGfVdISIjS09O1b98+7d+/X2azWenp\n6exrBQAEHIObr1YBAPCSnZ2t9evX+3saTVRWVur06dPN3kIMAECw47ZhAADe8vTpU33zzTf+nkaz\nKioqNHPmTH9PAwAAv+DKKwAAAAAg4HHlFQAAAAAQ8EheAQAAAAABj+QVAAAAABDwSF4BAAAAAAGP\n5BUAAAAAEPD+A0c9gFNugg70AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xdb94828>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "TPP.plot(kind='bar',figsize=(16,10))\n",
    "plt.xticks(rotation=40)\n",
    "plt.axhline(0.8,color='#BA55D3')\n",
    "plt.axhline(0.5,color='#BA55D3')\n",
    "plt.annotate('80% survival rate',xy=(30,0.81),xytext=(32,0.85),arrowprops=dict(facecolor='#BA55D3',shrink=0.05))\n",
    "plt.annotate('50% survival rate',xy=(32,0.51),xytext=(34,0.54),arrowprops=dict(facecolor='#BA55D3',shrink=0.05))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__From the plot, we can draw some horizontal lines and make some classification. I only choose 80% and 50%, because I'm so afraid of overfitting.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# use 'Title','Pclass','Parch' to generate feature 'TPP'.\n",
    "Tit=['Girl','Master','Mr','Miss','Mrs','Rareman','Rarewoman']\n",
    "for i in Tit:\n",
    "    for j in range(1,4):\n",
    "        for g in range(0,10):\n",
    "            if full.loc[(full.Title==i)&(full.Pclass==j)&(full.Parch==g)&(full.Survived.notnull()),'Survived'].mean()>=0.8:\n",
    "                full.loc[(full.Title==i)&(full.Pclass==j)&(full.Parch==g),'TPP']=1\n",
    "            elif full.loc[(full.Title==i)&(full.Pclass==j)&(full.Parch==g)&(full.Survived.notnull()),'Survived'].mean()>=0.5:\n",
    "                full.loc[(full.Title==i)&(full.Pclass==j)&(full.Parch==g),'TPP']=2\n",
    "            elif full.loc[(full.Title==i)&(full.Pclass==j)&(full.Parch==g)&(full.Survived.notnull()),'Survived'].mean()>=0:\n",
    "                full.loc[(full.Title==i)&(full.Pclass==j)&(full.Parch==g),'TPP']=3\n",
    "            else: \n",
    "                full.loc[(full.Title==i)&(full.Pclass==j)&(full.Parch==g),'TPP']=4"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "+ __'TPP=1' means highest probability to survive, and 'TPP=3' means the lowest.__\n",
    "+ __'TPP=4' means there is no such combination of (Title&Pclass&Pclass) in train set. Let's see what kind of combination it contains.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Name</th>\n",
       "      <th>Parch</th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Title</th>\n",
       "      <th>AgeCut</th>\n",
       "      <th>FareCut</th>\n",
       "      <th>TPP</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>915</th>\n",
       "      <td>48.0</td>\n",
       "      <td>1</td>\n",
       "      <td>C</td>\n",
       "      <td>262.375</td>\n",
       "      <td>Ryerson, Mrs. Arthur Larned (Emily Maria Borie)</td>\n",
       "      <td>3</td>\n",
       "      <td>916</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>PC 17608</td>\n",
       "      <td>Mrs</td>\n",
       "      <td>3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>960</th>\n",
       "      <td>60.0</td>\n",
       "      <td>1</td>\n",
       "      <td>S</td>\n",
       "      <td>263.000</td>\n",
       "      <td>Fortune, Mrs. Mark (Mary McDougald)</td>\n",
       "      <td>4</td>\n",
       "      <td>961</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>19950</td>\n",
       "      <td>Mrs</td>\n",
       "      <td>4.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>979</th>\n",
       "      <td>33.0</td>\n",
       "      <td>0</td>\n",
       "      <td>Q</td>\n",
       "      <td>7.750</td>\n",
       "      <td>O'Donoghue, Ms. Bridget</td>\n",
       "      <td>0</td>\n",
       "      <td>980</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>364856</td>\n",
       "      <td>Rarewoman</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1011</th>\n",
       "      <td>12.0</td>\n",
       "      <td>0</td>\n",
       "      <td>S</td>\n",
       "      <td>15.750</td>\n",
       "      <td>Watt, Miss. Bertha J</td>\n",
       "      <td>0</td>\n",
       "      <td>1012</td>\n",
       "      <td>2</td>\n",
       "      <td>female</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>C.A. 33595</td>\n",
       "      <td>Girl</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1030</th>\n",
       "      <td>40.0</td>\n",
       "      <td>0</td>\n",
       "      <td>S</td>\n",
       "      <td>46.900</td>\n",
       "      <td>Goodwin, Mr. Charles Frederick</td>\n",
       "      <td>6</td>\n",
       "      <td>1031</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CA 2144</td>\n",
       "      <td>Mr</td>\n",
       "      <td>3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1033</th>\n",
       "      <td>61.0</td>\n",
       "      <td>1</td>\n",
       "      <td>C</td>\n",
       "      <td>262.375</td>\n",
       "      <td>Ryerson, Mr. Arthur Larned</td>\n",
       "      <td>3</td>\n",
       "      <td>1034</td>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>PC 17608</td>\n",
       "      <td>Mr</td>\n",
       "      <td>4.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1233</th>\n",
       "      <td>34.5</td>\n",
       "      <td>0</td>\n",
       "      <td>S</td>\n",
       "      <td>69.550</td>\n",
       "      <td>Sage, Mr. John George</td>\n",
       "      <td>9</td>\n",
       "      <td>1234</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CA. 2343</td>\n",
       "      <td>Mr</td>\n",
       "      <td>3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1256</th>\n",
       "      <td>39.0</td>\n",
       "      <td>0</td>\n",
       "      <td>S</td>\n",
       "      <td>69.550</td>\n",
       "      <td>Sage, Mrs. John (Annie Bullen)</td>\n",
       "      <td>9</td>\n",
       "      <td>1257</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CA. 2343</td>\n",
       "      <td>Mrs</td>\n",
       "      <td>3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Age Cabin Embarked     Fare  \\\n",
       "915   48.0     1        C  262.375   \n",
       "960   60.0     1        S  263.000   \n",
       "979   33.0     0        Q    7.750   \n",
       "1011  12.0     0        S   15.750   \n",
       "1030  40.0     0        S   46.900   \n",
       "1033  61.0     1        C  262.375   \n",
       "1233  34.5     0        S   69.550   \n",
       "1256  39.0     0        S   69.550   \n",
       "\n",
       "                                                 Name  Parch  PassengerId  \\\n",
       "915   Ryerson, Mrs. Arthur Larned (Emily Maria Borie)      3          916   \n",
       "960               Fortune, Mrs. Mark (Mary McDougald)      4          961   \n",
       "979                           O'Donoghue, Ms. Bridget      0          980   \n",
       "1011                             Watt, Miss. Bertha J      0         1012   \n",
       "1030                   Goodwin, Mr. Charles Frederick      6         1031   \n",
       "1033                       Ryerson, Mr. Arthur Larned      3         1034   \n",
       "1233                            Sage, Mr. John George      9         1234   \n",
       "1256                   Sage, Mrs. John (Annie Bullen)      9         1257   \n",
       "\n",
       "      Pclass     Sex  SibSp  Survived      Ticket      Title  AgeCut  FareCut  \\\n",
       "915        1  female      1       NaN    PC 17608        Mrs     3.0      5.0   \n",
       "960        1  female      1       NaN       19950        Mrs     4.0      5.0   \n",
       "979        3  female      0       NaN      364856  Rarewoman     3.0      1.0   \n",
       "1011       2  female      0       NaN  C.A. 33595       Girl     1.0      3.0   \n",
       "1030       3    male      1       NaN     CA 2144         Mr     3.0      5.0   \n",
       "1033       1    male      1       NaN    PC 17608         Mr     4.0      5.0   \n",
       "1233       3    male      1       NaN    CA. 2343         Mr     3.0      5.0   \n",
       "1256       3  female      1       NaN    CA. 2343        Mrs     3.0      5.0   \n",
       "\n",
       "      TPP  \n",
       "915   4.0  \n",
       "960   4.0  \n",
       "979   4.0  \n",
       "1011  4.0  \n",
       "1030  4.0  \n",
       "1033  4.0  \n",
       "1233  4.0  \n",
       "1256  4.0  "
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full[full.TPP==4]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__ We can simply classify them by 'Sex'&'Pclass'.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "full.ix[(full.TPP==4)&(full.Sex=='female')&(full.Pclass!=3),'TPP']=1\n",
    "full.ix[(full.TPP==4)&(full.Sex=='female')&(full.Pclass==3),'TPP']=2\n",
    "full.ix[(full.TPP==4)&(full.Sex=='male')&(full.Pclass!=3),'TPP']=2\n",
    "full.ix[(full.TPP==4)&(full.Sex=='male')&(full.Pclass==3),'TPP']=3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.0    870\n",
       "1.0    262\n",
       "2.0    177\n",
       "Name: TPP, dtype: int64"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full.TPP.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 1309 entries, 0 to 1308\n",
      "Data columns (total 16 columns):\n",
      "Age            1309 non-null float64\n",
      "Cabin          1309 non-null object\n",
      "Embarked       1309 non-null object\n",
      "Fare           1309 non-null float64\n",
      "Name           1309 non-null object\n",
      "Parch          1309 non-null int64\n",
      "PassengerId    1309 non-null int64\n",
      "Pclass         1309 non-null int64\n",
      "Sex            1309 non-null object\n",
      "SibSp          1309 non-null int64\n",
      "Survived       891 non-null float64\n",
      "Ticket         1309 non-null object\n",
      "Title          1309 non-null object\n",
      "AgeCut         1309 non-null float64\n",
      "FareCut        1309 non-null float64\n",
      "TPP            1309 non-null float64\n",
      "dtypes: float64(6), int64(4), object(6)\n",
      "memory usage: 163.7+ KB\n"
     ]
    }
   ],
   "source": [
    "full.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Basic Modeling & Evaluation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "predictors=['Cabin','Embarked','Parch','Pclass','Sex','SibSp','Title','AgeCut','TPP','FareCut','Age','Fare']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# convert categorical variables to numerical variables\n",
    "full_dummies=pd.get_dummies(full[predictors])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Parch</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>AgeCut</th>\n",
       "      <th>TPP</th>\n",
       "      <th>FareCut</th>\n",
       "      <th>Age</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin_0</th>\n",
       "      <th>Cabin_1</th>\n",
       "      <th>...</th>\n",
       "      <th>Embarked_S</th>\n",
       "      <th>Sex_female</th>\n",
       "      <th>Sex_male</th>\n",
       "      <th>Title_Girl</th>\n",
       "      <th>Title_Master</th>\n",
       "      <th>Title_Miss</th>\n",
       "      <th>Title_Mr</th>\n",
       "      <th>Title_Mrs</th>\n",
       "      <th>Title_Rareman</th>\n",
       "      <th>Title_Rarewoman</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 22 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   Parch  Pclass  SibSp  AgeCut  TPP  FareCut   Age     Fare  Cabin_0  \\\n",
       "0      0       3      1     2.0  3.0      1.0  22.0   7.2500        1   \n",
       "1      0       1      1     3.0  1.0      5.0  38.0  71.2833        0   \n",
       "2      0       3      0     2.0  2.0      2.0  26.0   7.9250        1   \n",
       "3      0       1      1     3.0  1.0      5.0  35.0  53.1000        0   \n",
       "4      0       3      0     3.0  3.0      2.0  35.0   8.0500        1   \n",
       "\n",
       "   Cabin_1       ...         Embarked_S  Sex_female  Sex_male  Title_Girl  \\\n",
       "0        0       ...                  1           0         1           0   \n",
       "1        1       ...                  0           1         0           0   \n",
       "2        0       ...                  1           1         0           0   \n",
       "3        1       ...                  1           1         0           0   \n",
       "4        0       ...                  1           0         1           0   \n",
       "\n",
       "   Title_Master  Title_Miss  Title_Mr  Title_Mrs  Title_Rareman  \\\n",
       "0             0           0         1          0              0   \n",
       "1             0           0         0          1              0   \n",
       "2             0           1         0          0              0   \n",
       "3             0           0         0          1              0   \n",
       "4             0           0         1          0              0   \n",
       "\n",
       "   Title_Rarewoman  \n",
       "0                0  \n",
       "1                0  \n",
       "2                0  \n",
       "3                0  \n",
       "4                0  \n",
       "\n",
       "[5 rows x 22 columns]"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full_dummies.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__We choose 7 models and use 5-folds cross-calidation to evaluate these models.__"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Models include:\n",
    "\n",
    "+ k-Nearest Neighbors\n",
    "+ Logistic Regression\n",
    "+ Naive Bayes classifier\n",
    "+ Decision Tree\n",
    "+ Random Forrest\n",
    "+ Gradient Boosting Decision Tree\n",
    "+ Support Vector Machine"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.model_selection import cross_val_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.naive_bayes import GaussianNB\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.ensemble import GradientBoostingClassifier\n",
    "from sklearn.svm import SVC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "models=[KNeighborsClassifier(),LogisticRegression(),GaussianNB(),DecisionTreeClassifier(),RandomForestClassifier(),\n",
    "       GradientBoostingClassifier(),SVC()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((1309, 16), (1309, 22))"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full.shape,full_dummies.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "X=full_dummies[:891]\n",
    "y=full.Survived[:891]\n",
    "test_X=full_dummies[891:]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__As some algorithms such as KNN and SVM are sensitive to the scaling of the data, here we also apply standard-scaling to the data.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import StandardScaler"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "scaler=StandardScaler()\n",
    "X_scaled=scaler.fit(X).transform(X)\n",
    "test_X_scaled=scaler.fit(X).transform(test_X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "KNN:0.722876869778,[ 0.68156425  0.7150838   0.73033708  0.73033708  0.75706215]\n",
      "LR:0.831672250422,[ 0.83798883  0.82681564  0.80337079  0.83707865  0.85310734]\n",
      "NB:0.810311027039,[ 0.83798883  0.81005587  0.79775281  0.78089888  0.82485876]\n",
      "Tree:0.785673102259,[ 0.7877095   0.75418994  0.84269663  0.75280899  0.79096045]\n",
      "RF:0.800204518994,[ 0.79888268  0.81005587  0.84269663  0.75842697  0.79096045]\n",
      "GDBT:0.841822627028,[ 0.8547486   0.80446927  0.86516854  0.80337079  0.88135593]\n",
      "SVM:0.747564940189,[ 0.72067039  0.73184358  0.76404494  0.73595506  0.78531073]\n"
     ]
    }
   ],
   "source": [
    "# evaluate models by using cross-validation\n",
    "names=['KNN','LR','NB','Tree','RF','GDBT','SVM']\n",
    "for name, model in zip(names,models):\n",
    "    score=cross_val_score(model,X,y,cv=5)\n",
    "    print(\"{}:{},{}\".format(name,score.mean(),score))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "KNN:0.808133025651,[ 0.81564246  0.78212291  0.79775281  0.80898876  0.83615819]\n",
      "LR:0.832833650201,[ 0.82681564  0.81564246  0.8258427   0.83146067  0.86440678]\n",
      "NB:0.800337117662,[ 0.75418994  0.79888268  0.82022472  0.7752809   0.85310734]\n",
      "Tree:0.782302315742,[ 0.78212291  0.75977654  0.8258427   0.75280899  0.79096045]\n",
      "RF:0.812589532472,[ 0.82681564  0.7877095   0.85393258  0.7752809   0.81920904]\n",
      "GDBT:0.841822627028,[ 0.8547486   0.80446927  0.86516854  0.80337079  0.88135593]\n",
      "SVM:0.833944833422,[ 0.83798883  0.82681564  0.83146067  0.79775281  0.87570621]\n"
     ]
    }
   ],
   "source": [
    "# used scaled data\n",
    "names=['KNN','LR','NB','Tree','RF','GDBT','SVM']\n",
    "for name, model in zip(names,models):\n",
    "    score=cross_val_score(model,X_scaled,y,cv=5)\n",
    "    print(\"{}:{},{}\".format(name,score.mean(),score))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__'k-Nearest Neighbors', 'Support Vector Machine' perform much better on scaled data__"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "**Then we use (feature importances) in GradientBoostingClassifier to see which features are important.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "model=GradientBoostingClassifier()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GradientBoostingClassifier(criterion='friedman_mse', init=None,\n",
       "              learning_rate=0.1, loss='deviance', max_depth=3,\n",
       "              max_features=None, max_leaf_nodes=None,\n",
       "              min_impurity_split=1e-07, min_samples_leaf=1,\n",
       "              min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
       "              n_estimators=100, presort='auto', random_state=None,\n",
       "              subsample=1.0, verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.fit(X,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([  8.23873192e-03,   1.55330255e-02,   4.23491355e-02,\n",
       "         1.73248767e-02,   1.58137778e-01,   7.00455031e-03,\n",
       "         2.81746705e-01,   3.56681604e-01,   1.31821169e-02,\n",
       "         1.31893025e-02,   2.71040896e-03,   2.88669758e-04,\n",
       "         1.50828689e-02,   4.70109269e-04,   2.09220151e-03,\n",
       "         3.74471722e-03,   1.81631536e-02,   4.23201420e-03,\n",
       "         2.76442479e-02,   1.04389872e-02,   1.74479529e-03,\n",
       "         0.00000000e+00])"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.feature_importances_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index([u'Parch', u'Pclass', u'SibSp', u'AgeCut', u'TPP', u'FareCut', u'Age',\n",
       "       u'Fare', u'Cabin_0', u'Cabin_1', u'Embarked_C', u'Embarked_Q',\n",
       "       u'Embarked_S', u'Sex_female', u'Sex_male', u'Title_Girl',\n",
       "       u'Title_Master', u'Title_Miss', u'Title_Mr', u'Title_Mrs',\n",
       "       u'Title_Rareman', u'Title_Rarewoman'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "fi=pd.DataFrame({'importance':model.feature_importances_},index=X.columns)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>importance</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Fare</th>\n",
       "      <td>0.356682</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Age</th>\n",
       "      <td>0.281747</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>TPP</th>\n",
       "      <td>0.158138</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SibSp</th>\n",
       "      <td>0.042349</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Title_Mr</th>\n",
       "      <td>0.027644</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Title_Master</th>\n",
       "      <td>0.018163</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AgeCut</th>\n",
       "      <td>0.017325</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Pclass</th>\n",
       "      <td>0.015533</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Embarked_S</th>\n",
       "      <td>0.015083</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cabin_1</th>\n",
       "      <td>0.013189</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cabin_0</th>\n",
       "      <td>0.013182</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Title_Mrs</th>\n",
       "      <td>0.010439</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Parch</th>\n",
       "      <td>0.008239</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FareCut</th>\n",
       "      <td>0.007005</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Title_Miss</th>\n",
       "      <td>0.004232</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Title_Girl</th>\n",
       "      <td>0.003745</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Embarked_C</th>\n",
       "      <td>0.002710</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Sex_male</th>\n",
       "      <td>0.002092</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Title_Rareman</th>\n",
       "      <td>0.001745</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Sex_female</th>\n",
       "      <td>0.000470</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Embarked_Q</th>\n",
       "      <td>0.000289</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Title_Rarewoman</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 importance\n",
       "Fare               0.356682\n",
       "Age                0.281747\n",
       "TPP                0.158138\n",
       "SibSp              0.042349\n",
       "Title_Mr           0.027644\n",
       "Title_Master       0.018163\n",
       "AgeCut             0.017325\n",
       "Pclass             0.015533\n",
       "Embarked_S         0.015083\n",
       "Cabin_1            0.013189\n",
       "Cabin_0            0.013182\n",
       "Title_Mrs          0.010439\n",
       "Parch              0.008239\n",
       "FareCut            0.007005\n",
       "Title_Miss         0.004232\n",
       "Title_Girl         0.003745\n",
       "Embarked_C         0.002710\n",
       "Sex_male           0.002092\n",
       "Title_Rareman      0.001745\n",
       "Sex_female         0.000470\n",
       "Embarked_Q         0.000289\n",
       "Title_Rarewoman    0.000000"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fi.sort_values('importance',ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0xf1ad2e8>"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqUAAAHSCAYAAADVF7LWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8VPW9//H3zGSbLJAACSGBRAJZ0ICAGJYKCuKGFaTU\nqlitWqRAtVr3/gqCVi702itcFVzABYQqKogooJVNCCCGRdkMQ0ISIAlLCFuSyTYzvz98ZC4gMAGS\nfCG+no8HDzJz5ns+3++Z7T3fc86MxePxeAQAAAAYZDXdAQAAAIBQCgAAAOMIpQAAADCOUAoAAADj\nCKUAAAAwjlAKAAAA4wilAOpFv379lJycfNp/dcHj8eijjz5SRUVFnayvNtatW6fk5GSVlpY2WE1f\niouL9fnnn5vuBgBcMD/THQDQeD3++OP6zW9+Uy/rzsjI0JgxY3TrrbcqMDCwXmpcCl566SWVlpbq\ntttuM90VALgghFIA9SYkJESRkZH1sm5+9+MnbAcAjQWhFIAx33zzjV5++WXl5OSoTZs2evDBBzVk\nyBDv8vfee08ffPCB8vPzFRwcrOuuu07jxo1TcXGx7rvvPklS165dNWHCBOXn52v58uWaN2+et/29\n996r1NRUPfPMM3r11Vf1ww8/yOPx6Pvvv9fo0aM1ePBgvf3225o1a5aOHDmilJQUPfPMM+rcuXOt\n+v/ss8+qadOmOnbsmBYvXqxmzZpp7NixOnz4sCZPnqySkhLdcssteuGFF2SxWPTss88qICBApaWl\nWrJkiaKiovTwww9r0KBB3nUuWrRIb7zxhnJzc9WqVSuNGDFCgwcP9tarrq5WXl6e8vLy1K5dO23c\nuFGSlJycrB07dqioqEgTJkzQ6tWrVVJSoujoaI0YMUK//e1vvdvk6quv1o8//qjVq1crIiJCDz/8\nsO644w5JUkVFhf7nf/5HCxculNPpVI8ePTR27Fi1bNlSki5oewHA2XBMKQAjdu7cqb/85S8aOnSo\nvvjiC/35z3/WP//5Ty1cuFCS9Pnnn+vVV1/Vs88+q6+++koTJkzQkiVL9NFHH6lVq1Z69dVXJUlL\nlizRgAEDalVz1apVSktL00cffaRrr71WH374oWbNmqVx48bp008/1bXXXqs//OEP2rt3b63HMXv2\nbLVr104LFixQx44d9cQTT2jevHl688039fzzz2vu3LlatmyZ9/bz5s1TaGio5s2bp3vuuUfPPvus\nvv32W0nSF198oaefflp33XWXFixYoHvvvVdjxozRihUrvO2/+OIL3XPPPZoxY4amTZumW265RX37\n9lV6erok6emnn1ZxcbHee+89LVy4UP369dO4ceNUVFTkXce0adPUu3dvLVy4UDfccIOef/557/Ln\nnntOS5cu1UsvvaSPP/5YZWVlevzxxyWpTrYXAJwJoRRAvZk4caK6dOly0r/169dLkqZPn66BAwfq\nzjvvVFxcnAYMGKAHH3xQ77zzjiQpMjJSEydOVN++fRUbG6vrr79eaWlpcjgcstlsatq0qSSpWbNm\nCgoKqlV/7Ha7hg8frnbt2qlZs2Z688039fjjj+vaa6/VZZddphEjRuiqq67S7Nmzaz3Gtm3batiw\nYYqLi9NvfvMbHT9+XH/729+UnJysW2+9VW3btlVWVpb39rGxsRo7dqzatWun+++/X3379tWHH34o\nSXrnnXf0u9/9TkOHDtVll12m3//+9xoyZIjeeOONk+rdfvvt6tChg0JDQxUUFKSAgADvYRLXXXed\nXnjhBaWkpCg+Pl4jR45UVVWVcnNzvevo3r27hg4dqjZt2uixxx5TVVWVMjMzdfz4cX3xxRf6f//v\n/6lXr15q166dXnjhBXXp0kWVlZV1sr0A4EzYfQ+g3vzpT3/SwIEDT7quZjfwzp075XA49MUXX3iX\nVVdXy8/vp5elHj16aNu2bZo8ebJ27dqlrKws7dq1S7fffvt59yc2NlYWi0WSVFpaqoKCAo0ePVrP\nPfec9zaVlZUKCAio9TrbtGnj/bsmHJ94XWBgoCorK72Xu3TpIqv1/+YDOnXq5D17Pjs7W/fff/9J\n67/qqqu8s8enrvt0hg4dqi+//FLvvfeecnNztX37dkmSy+Xy3uayyy7z/h0aGirpp22fk5Oj6upq\ndezY0bs8Li5OTz75ZJ1tLwA4E0IpgHoTERGh+Pj40y5zuVy69957ddddd512+bx58zRu3Dj95je/\nUe/evTVy5EjvLvvTqQmbJ6qurj7p8oln6deEtIkTJ+ryyy8/6Xa1nXmV5A3RvvpSw2aznXTZ5XJ5\nQ+rpvkXA7XafFCjP1je3261hw4Zp3759uvXWW3XnnXeqffv2uuWWW066nb+//8/aejweb7g83clT\ndbW9AOBM2H0PwIh27dopLy9P8fHx3n9r167VrFmzJEnvvvuu/vjHP2rcuHG64447lJKSory8PG9g\nOjX4+fv7n/T9oR6P56zHOjZp0kSRkZHav3//SX2YMWOGVq1aVQ8j/knNzGWNzZs3KyUlRZKUkJCg\nTZs2nbR806ZNateu3RnXd+J22L59u9auXatp06bpkUce0Y033qiSkhJJtTtLv3Xr1rLZbCf1cc+e\nPerRo4ecTqeR7QXgl4NQCsCIBx98UCtWrNAbb7yhvLw8LV68WP/85z+9u/ejoqK0bt06ZWVlaefO\nnRo9erSysrK8u8KDg4MlSdu2bVNpaak6duyo3NxczZ8/X7t379Z//dd/6ejRo2ftw7BhwzR16lQt\nWrRIu3fv1muvvaY5c+YoISGh3sa9fft2TZo0STk5OXr77be1atUq3XvvvZKk4cOH6+OPP9YHH3yg\n3NxczZ49W3PnzvV+08DpBAcHKz8/X3v37lVkZKRsNpsWLlyo/Px8rV69Ws8884wknXQIwZmEhobq\nt7/9rSZOnKiMjAzt3LlT48aNU2Jiolq2bGlkewH45WD3PQAjUlNT9corr+iVV17Ra6+9psjISI0Y\nMUJ//OMfJUl///vfNWbMGA0ZMkRhYWHq2bOn/vSnP+mrr76SJCUlJalv37568MEH9cQTT+j+++/X\n8OHDNWHCBLlcLg0ZMkS33nrrWftw3333qby8XC+99JKKiorUtm1bvfLKK+ratWu9jfuaa65RXl6e\nBg0apLi4OE2ZMkWdOnWS9NOvYI0dO1bTpk3T+PHjFR8frxdffPFnx+WeaPDgwVqyZIluvfVWLVmy\nRC+88IKmTp2qqVOnKjY2VkOHDtXHH3+sbdu2qU+fPj779+yzz2rixIl6+OGH5XK59Ktf/UpjxoyR\nZGZ7AfjlsHj45mUAaBDPPvusysrK9Morr5juCgBcdNh9DwAAAOMIpQAAADCO3fcAAAAwjplSAAAA\nGEcoBQAAgHGEUgAAABh3UX1PaUFBwTm3iYmJOa9256sx12vMY6Me9ahnrl5jHhv1qNdY68XExNRD\nb86OmVIAAAAYRygFAACAcYRSAAAAGEcoBQAAgHGEUgAAABhHKAUAAIBxhFIAAAAYd1F9TykAAEBt\nuR4aeMHr2HPC37ZpC3ze/rvvvtP+/ft12223XXDtM/n00081ePDgelv/xYqZUgAAgFpKS0ur10Aq\nSe+//369rv9ixUwpAABALX355Zf67rvvVFhYqKioKO3bt0/9+vVTTk6Odu7cqR49euihhx7SY489\npri4OO3evVsej0djx45Vs2bNNHHiRK1du1aSdP311+u3v/2tJk6cqGPHjunYsWPq0aOHjh8/rkmT\nJmn48OF66aWXVFpaqqKiIt1+++0aNGiQHnvsMbVv3145OTkqKyvT2LFjFR0drffff1/p6elyuVwa\nOHCgBg4cqPfff1/z5s2TxWJR3759NWTIEMNb8MwIpQAAAOeosLBQL730kiorK3X33Xfr448/VlBQ\nkO666y499NBDkqQrrrhCjz/+uObPn69Zs2bp6quv1t69ezV16lS5XC498sgj6tq1qySpS5cuuuOO\nOyRJ8+bN01//+lc5HA7169dPffr0UVFRkR577DENGjRIkpSSkqKHH35Y06dP17Jly3T11Vdr3bp1\nmjp1qtxut6ZNm6acnBwtWrRIr7zyiiTpqaee0tVXX624uDgDW8w3QikAAMA5atWqlUJDQ1VZWamI\niAg1adLkZ7epCZypqalavXq1oqKi1K1bN1ksFvn5+enyyy9Xbm6uJKlNmzY/ax8REaFPPvlEq1at\nUnBwsKqrq73LEhMTJUlRUVEqLi7Wnj171KFDB9lsNtlsNo0aNUrLly9XQUGBnnjiCUnS8ePHlZ+f\nf9GGUo4pBQAAOEcWi8XnbXbs2CFJ2rJliy677DLFx8drw4YNkqTq6mpt27ZNrVu3liRZrT+PZB99\n9JGuuOIK/f3vf9d111131vpxcXFyOBxyu92qrq7Wk08+qTZt2qh9+/aaNGmSJk+erJtvvlkJCQnn\nM9wGwUwpAABAPfjqq6/08ccfy263629/+5uaNm2qrKws/fnPf1ZVVZX69u2rpKSkn7WLj4/X+PHj\nNWDAAL3yyitatmyZQkNDZbPZVFlZedpa7du3V1pamh555BG53W4NGjRI7du3V8+ePfXII4+oqqpK\nKSkpatGiRX0P+7xZPB6Px3QnahQUFJxzm5iYmPNqd74ac73GPDbqUY965uo15rFRj3pn8thjj+nx\nxx//2a7yS2V8MTEx9dCbs2P3PQAAAIy7JHbfn+3LcfeccUntvgQXAACgrk2ePNl0Fy45zJQCAADA\nOEIpAAAAjCOUAgAAwDifx5S63W5Nnz5deXl58vf314gRIxQdHe1d/u233+qzzz6TJPXu3VsDBgyQ\nJD3zzDOy2+2Sfvpi11GjRtVH/wEAANAI+AylGRkZqqqq0vjx4+VwODRz5kw9/fTTkn4KrP/+9781\n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\n0DrLy8uVn5+v8PBwWSwWVVZWGvsQ6Ofnp3nz5mn79u2SpOjo6AarbbFYVF5ers2bN8tut9d5QKt5\n7h05ckS7du1SaWmp2rZtW6c1ztX8+fM1d+5cFRYWavXq1WrXrt15fcg+Vc1YLRbLSc8HkyG1pu66\ndeuUn5+v1q1b18l6XS6XrFar9zWo5u/6Nm/ePH322Weqrq7Wp59+Ko/Ho6ioKAUEBNR77dM59b3G\n6XSecw675EPpiQ/8qqoqvf/++/rqq6+UmZmp8PDwC36xPrFGjeLiYs2cOVO33XabwsLC9Mknn6hV\nq1aKioq64Fo1ysvLVVZWpm+++UY9e/b0zvp89913io+PV7t27eqs1tnUbNvc3FxNnz5d+fn5atq0\nab1/IisvL9cjjzyiyspKpaSkKDc3Vy+//LJCQkLUoUOHBp/JOfUxcOTIEc2YMUP+/v664447av2E\nO3E9brdbn376qYKCghQXF6eQkBC1bdtWdru9Tvtecx9mZWXp448/VmlpqS677LI6rXG+CgoKtG3b\nNv3pT3+SzWZTYWGhtm3bJrfbrZCQEPn5ndvOnDVr1qiwsFCtW7fWvn37lJycXG9vDocOHdLRo0c1\nZMgQXXbZZfL399eiRYvUq1evc+53bZz4xldSUqJ3331X69atU9OmTRUQEKAmTZqc9xv+mjVr9MUX\nX6hbt25avny53nnnHbndboWGhtZJQDlXRUVF+uSTT5Samlqvj9VTn9dr167VG2+8oaCgIFVUVKhN\nmzZ1UqfmzbmmVkVFhaqqqpSfn69mzZpd0H13IebNm6dDhw7pscceU1pamq688ko1b978gtZZXFws\nu93uHcvChQu1Zs0aHTp0SAkJCQ06xlO3aW5urj766CPt3LlTa9euVXBwsOLj4897/d9//72io6O9\n70dz587V4sWLtX//foWGhqpp06YXPIYz+eijj3To0CH9+c9/VteuXRUXF6fvv/9eVVVVio2NNbK3\no+a9Jj8/X2+++aY2bdqkFi1aqHnz5rWeDLk49+WdgxNnf7755hsFBQXpueeek9vt1oIFC3T8+PFz\nXuepx2XU1Ni0aZPWrFkjj8ejyspKHTt2TEuXLlXr1q29P6t6ocd0bN++Xf/93/+td955R4cPH9aV\nV16p48eP6z//+Y8mTZqkPXv26Morr7ygGmdTUlKi+fPna8mSJTpy5Iiqq6u1YsUKzZ49W3369FFA\nQICmTZum6urqeutDzbFWrVu31t69e7Vr1y7t2rVL/v7+6t27t/z8/Br8mN6ax8BXX32llStX6ujR\no/rVr36l0tJSVVZWSjr7fV/zc7w16ykrK5PVapXb7da6des0YMAAHT9+XFlZWSf9dO/5OnX7rF+/\nXu+++6569uwpt9utY8eOXXCNuhAXF6esrCy9/PLLevnllzVlyhTl5eXpvffe0+bNm8/5+dSpUyfd\nd999at++vYqKiuRwOCTV37FWO3fu9L7GpKamqk2bNlq+fHmdrd/lcqmsrEySZLPZvL+cl56erv37\n9+u5555TZWWlsrKyVFpaek5v+G632/s46dOnj8LCwvTaa69p3759uuuuu1RUVKSMjIw6G0tt7N27\nV1OnTlVycrJuvvlmlZaW1ttz/cRdjNXV1aqoqNBnn32mBx54QD169NCBAwe0efNm723P18GDB/XW\nW2/J4/HI7XbrP//5j6ZPny6bzaagoCBt2LBBUv0fdnYit9ut8vJyHTx4UEOGDJGfn58sFouaNGmi\nyspKHThwwHu7c/H111/r888/18GDByVJ06dP18GDBzV48GDNnz9fK1askNQwxz6eGoLKy8s1e/Zs\nud1uPfnkk7r33nuVnp5+XhlB+unQneXLl3vHtHz5cpWWluqxxx5Tbm6uli5dqqKioroYykncbrdK\nS0uVn5+vu+++W3a7XdXV1UpMTFRiYqJ27dqlqqqqBju+9MTHiNvt1sqVKzVjxgzdeOONSkxM1JQp\nUySp1iH5kpspPd0nn1deeUUBAQGqqKhQbm6uMjIyFBYWphYtWqhFixZq2rTpOX0Kra6uls1m87bZ\nsmWL5syZo8zMTO3Zs0exsbHKy8vThg0bNG7cOIWEhOj7779Xp06dzvvTycGDBzV79mxt2bJFt9xy\niywWi1atWqWbbrpJ27Zt05o1a3TLLbdo8ODBCgkJOa8avvznP//R3Llz1axZMzkcDjVt2lT+/v5a\nvXq1LBaLhgwZopSUFC1dulSBgYEX9AnzVEeOHNHatWvVtm1bWSwW+fn56YcfftDx48cVERGh+Ph4\nuVwu7du3T0lJSfX+Au52u5WZmSmLxaLg4GAdPnxYEydOlN1uV3BwsFatWqX27dvL4/GooKDAeyzh\nqf367rvv9Prrr2vr1q3auXOn2rVrpwULFqi4uFht27ZVXFycVq5cqRYtWig+Pl7Lli3TihUrdOWV\nV17QrsOafmRnZysiIsL74SkkJETp6ekqKChQ06ZNjR7PVjPz1717dyUlJSkyMlIPPvigrr76ah06\ndEg2m00JCQnn9NytmTG02+0qKipSfn6+kpKS6nxXtMfjUZMmTeRwOLRz50517txZVqtVR48eVVVV\nlRITEy+4xun2FvzrX/9SkyZNdNVVVyknJ0cbNmxQeHi4srOzlZmZqS5dutR6/SfOahw8eFBJSUn6\n7rvv1L9/f1155ZWqqKjQ3r17ZbPZ6nQvkCTvh8ya3YxFRUUKCgpSZWWl8vLyJEn9+vXTJ598opSU\nFHk8HgUGBl5w3ZKSEhUWFnoPUzhw4IDefvttlZSUqF27djp+/Lj27t2r9evXq1OnTpoyZYr69u17\nXs/FXbt2yW63q2nTpurRo4f279+viooKvf766xoyZIh69eqlyspK7d69W/7+/oqMjGyw2dKa19i5\nc+cqISHhpNpHjx7Vhx9+qE6dOtX6UKLq6mpZrVY1adJE33//vUJCQhQZGans7GwlJydr48aN3g8Y\nXbp0abAxStInn3yiHTt2KCoqSs2bN9eqVat0ww03KCYmRhs2bNC+ffvO6Rj2mtetmsfvhg0b1KlT\nJ61evVpBQUH68ccfdfjwYcXFxXlfc+t6XAEBAVq8eLGSk5MVERHhvT44OFhffvmlunfvXu/nupzY\nH0nat2+f7Ha7tmzZouzsbN1zzz1KSkrS6tWr5Xa7lZCQUKvZ0ksqlJ56XEpRUZGmT5+utm3b6te/\n/rUOHjyoTZs2qUuXLrrjjju0Zs0aBQUFqU2bNrV6Erjdbn3wwQdavHixEhMTFRYWpoqKCs2YMUM3\n3HCDunXrJqfTqby8PKWlpWnfvn1yOBxavny5brzxxvM69sntduvrr7/WO++8o5KSEj333HNq2bKl\nYmNjtWXLFvXp00fST58yrrjiCjVt2rRejgl0Op369ttvNXToUHXr1k09e/ZUkyZNFBERIT8/P5WX\nlysgIEDNmzfXgQMHFBUVVWc/HVtVVaVp06Zp/vz53tBXc3hAVVWV9uzZozZt2igkJER79uyRn59f\nnb9Jnq5PWVlZ+vbbb+Xv76/S0lKFhYXp1ltv1ZdffqnKyko1b95csbGxWrFihVJTUxUcHOxt7/F4\n9Nlnn2nTpk265557lJaWJrvdrri4OO3evVuHDx9WaGiooqKiVFxcrBUrVmjw4MGKjo5Wx44dFRMT\nc079PfXNbOvWrfrf//1fHT58WE2aNFHnzp1ls9l04MABPfjgg1qyZIlatGjRID//u3nzZjmdToWH\nh5/02K35ABcYGOi9vlmzZt49EjXb4cRx+Xrs1ywLCgryzipaLJbzHueZ6tVs76SkJH366acKDw9X\nZGSkli5dqubNm1/w4TVut1sul0tbt26V0+lUVFSU8vLylJ+fr8GDBysyMlIJCQneUF/zxuhrd/Op\nh4/UHO60f/9+XX755Tp48KCOHz+uK664QqGhocrJydHRo0eVmJhYJ7sDc3NzNXPmTG3YsEFff/21\n7Ha7SktLNX/+fMXGxiomJkYBAQFau3atunTpIj8/P33wwQcqLi6+oD1ELpdLx48f186dOxUWFqYm\nTZooMzNTb731lvr27atWrVqpqqpK3bt3V1VVlXr06KGioiJ5PB516dLlnI7Rczgcevfdd7VlyxZt\n27ZNzZo1U2BgoEaOHKlBgwapqqpKhw8f9r5mFBQUKDs7W6mpqQ12HG/N46C6ulqbN29Wt27dTvog\nu3//fqWlpfkMyTXrsVqtcrlcCg0NVUVFhTIzM2W327Vz506tWrVKV111le677z45HA41b95cYWFh\n9TamGnl5eZo0aZJ3UmrHjh3q0aOHiouLlZubqw4dOqhly5YqLCxUhw4dfL6n1mwLq9WqiooKVVRU\nqEWLFtqzZ4/27dunxMREzZo1SzfccIPuvPNOrVq1SmFhYfVyTHRlZaX3A1ZN37OysrR8+XLl5OSo\ntLRUrVq1qrcJrBN9//33mj59utatW6egoCAlJiaqqKhIZWVlio+PV2RkpF5//XUNGjSoVq8hF30o\ndbvdWr58uSwWiyIiIuR2u/Xxxx9r69at6tKliyoqKuR0OtW+fXs1a9ZMAQEBysnJ0RdffKG2bdvq\nxhtvPKdaS5cuVWhoqHJzc1VUVKTg4GBt2rRJv/vd7xQeHq7y8nJv7e7duysgIED33nuvWrZsec5j\nS09P15QpU9SiRQsNHDhQDodDqamp2rp1q2bMmKFOnTopMTFR4eHhysnJ8c7S1uUxhzVP5IMHD2re\nvHkKDg7W7t279dZbb2nZsmXKz89XQECA/P39tXTpUm3ZskV5eXm66aabTgph58vj8chms8lms6mk\npER+fn5as2aNevbsqZycHHXo0EF+fn7KyclRQkKCjh07poCAgDo7QP1EJ76o2Ww2rVy5UgsXLlRK\nSopCQkL05ptvaufOnerXr5+6dOninRFr27btz0JPeXm5li5dqkceeUTNmzdXcHCw98UpICBAubm5\ncjqdat68ubKzs3X06FElJCQoLi5OzZo1O6cZk1PPdKw55vkPf/iDunTpoq1btyo2NlbHjh3T8ePH\ntWrVKpWXl6t37971erxgzRi+++47zZs3TzfccMNpx2S1WpWTk6PXX39dP/zwg3bs2KHBgwerc+fO\nJ62r5ranrv9MQkNDFRYWppSUlHM+ecxXPYvFIrfbraCgIDVt2lQ5OTmaM2eOmjdvrptuuum8ZvV8\n7S2Ii4uTy+XS/v37lZSUJOmn15ClS5eqe/fuuuaaa3zWqOl/ZmamKioq9OOPP+qpp55S586d1axZ\nM4WEhGjlypXeD8bNmzdX586d6+QY2X379umDDz7QNddco7vvvltXXnmlOnTooMjISG3fvl2VlZWK\nj49XWFiY1q9fr7y8PA0ePFiXX355rcZ2JjUzzh6PR3369PGGprCwMG3YsEGpqamaN2+e9u3bp/z8\nfMXExOiDDz5QWVmZfv/735/Tc2T16tWaP3++N5ikpqYqLCxMISEhstvtWrZsmYYOHarPP/9crVu3\nVqtWrRQQEKC2bduqWbNm5z3GMznTB8Ka/8PDw/Xdd9/pwIEDatu2rXbs2KG5c+cqMTGxVnukapYv\nW7ZMs2bNUnZ2tm6//XZlZGR491iEhobK4/Fozpw5CgkJUc+ePev8eMcTT/4rKyuTv7+/du/ereTk\nZPXp00cbN27UgQMHFBYWpo4dO+rDDz9Uz5491apVK11xxRW1eq2tuc2XX36pd999V1lZWQoLC1Ob\nNm20fv16paSkyGaz6eDBg/rkk08UExOjvn37nvcHjTPdd9L/HcqzZcsWHThwQElJScrIyFB6erqu\nueYa72t7XexdONGp/cjJydHXX3+tBx54QCEhIdq6dav3/JrVq1crNTVVcXFx3teX2rioQ+m3336r\nd999V35+furevbt27dqld955R5GRkTp06JAyMjI0ZMgQrV27VqGhoYqLi1P79u3VsmVL3XDDDerU\nqVOta7ndbu9Mksvl0u23366PPvpI4eHhWrVqlWJiYhQTE6Pvv/9ee/fuVWlpqbp37+6d0TqX2cvd\nu3fr7bff1oYNG9SyZUvdeeedatWqlQ4cOKDXXntNknTHHXeoW7dukuQ9hrKiokIJCQkXfHZ2dXW1\n94SlmjfXJk2ayGq16vjx4yosLFTHjh11//33a8uWLbLb7UpISPC2+ctf/lIngbSGxWJRdHS0HA6H\nd7bm8OHD2r17twoLCzVw4EAtWrRIiYmJ6tatW72drVpz/61cuVKlpaXq0qWLwsPDVVpaqmuvvVaZ\nmZlKTk5WeHi4Zs+ercjISKWmpnqfbCc+BsrKyrR161a1bdvW+6bm8XiUk5OjkpIShYeHa8eOHfrg\ngw90+eWX67777jvp5LHafmqvuW1FRYUWLFggp9OphIQErVixQi6XS4sWLZLdbteSJUs0YMAAHTp0\nSGFhYbrnnnvq/QSWmv4lJiZq8eLFatasmWJjY0/7XImMjFTPnj112WWXadCgQd6Z8PLycu/xbjUn\n3M2fP18tWrRQSEjIad/catbv7++vqKioc3q+VFRU1LpezRhiYmKUmpqqjh07qnfv3goMDDzn3bDn\nsrdg9+7d8vPzU2xsrBITE3X99dd7D6U5tW7N19TUXLd3715NmjTJe3jSypUrddNNN8lms2njxo0q\nKSlRYGCgDh8+rJSUFIWGhl5wgKipv2vXLh08eFCDBg2SJO+H65ptvWHDBvn7+8vhcKisrEzt27f3\nhtTzdeKMc2lpqVq2bCmHw6EdO3YoMTFRnTt3VnZ2th544AHvDGafPn105ZVXqmfPngoICDin1/Yv\nv/xSt99+uzp27Cjpp5N85syZo/Xr1+uBBx7Q3LlzlZSUpKCgIG3atEndunVTREREnR9GU9sPhMHB\nwYqLi9PGjRu1fv16bd++XbfffvtZPwTUbA+PxyOXy6VZs2apuLhYw4YN05w5cxQcHKyrrrpK69at\nU2pqqrp27aq9e/fqpptu0nXXXVengfTEE53Lysr07rvvatmyZbLZbOrQoYOysrL05Zdf6qabbtK+\nffu0detWderUSddcc41atmzp3U5nuo9PvX7NmjXKycnRX/7yF+Xl5engwYPeE/G2b9+uBx98UOHh\n4frVr36lXr16nXQYYG3V9r6rORxh5cqV2rx5s3Jzc3XfffepT58+atKkSZ0G0lNPKP/hhx8UFBTk\nvXzkyBFt27ZNBw4c8O6Zqq6uVlhYmJo1a+Y9xKA2LspQWlpaqueff15FRUW65557vCe37NmzR02b\nNlX//v1VUFCgr776Sj179lRgYKA2bdqktm3bKjg42Hss5LmoudOPHTumwMBA77EnJSUlys7OVmlp\n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\nu7t5+PAhKpWK9vZ2zpw5IxaBbtmyZVoG6dDQEH/5y18YHBzkH//xH3FyckImkzE4OIi/vz/m5ub0\n9/fT09PDnj17qKmpob6+Hjs7O2JjYzUMUnh5a9DX5cjCi01/R0cHXV1duLi4YGJioqGUMJm1YKY2\n81PlVVJaBgYG3Lx5k3379lFRUUFKSgrDw8Ps2rVLXM/HaxbPhndUHckolZgSwoOqUCgYHByksrIS\nIyMjPD09WbRoES4uLj8KgUzn4Z5LMf650K6FmfF6jefx48ekpKQgl8tpbW0lPj6e1tZW/Pz8xIVd\nV1cXT09P7t69i4GBAeHh4fj5+YlFcq+7n6amplRXV1NRUYGdnR0mJiZcvXqV+vp61qxZQ0REhKiu\noY1d+Wycbz5EC2abmdCNniuP5XyZv5naEAqNU1QqFVu2bEFXVxcrKyuKi4v5+c9/TllZGcXFxZiY\nmKBSqbh27Rru7u7ExMQQFhaGvr4+f/jDH3B3d+fQoUPT7i44NjaGnp4e/f39ADg5OfHo0SN+97vf\nUVlZiZ+fH9bW1pSVlXH79m2uXLmCQqHg448/Fpu4vGydmUyOLPyf5rSTk5PY5UtgMmvtTG/mp4pw\nrImktK5du4aOjg6mpqasXr2asbEx6urqWLZsGQsXLkRXV3fOlYcko1Ri2hgbG4tSPw4ODj8K3U3n\nAZ8vYvyzrV070wi7e0NDQ3p6ekhPT6e0tJQtW7Zw7949SkpKWLlyJcnJyezevZu0tDSMjIxYtWoV\n9vb2k+rYIoStKisrycjI4OrVq8hkMj788EMWLlwIaK8V4Wydb66jBXPBTOhGz5XHcj7M30xuCCdq\nnNLV1cWZM2d4+PAhNjY27Ny5k56eHlE7UyjsEY65bNkyrbSeFZDJZDg4OIjtSpubm9m2bRvW1tak\np6dz8+ZNlixZgp+fH5GRkaxevVojb/RlntGp5sjeu3cPExOTKa3rs7GZnwyTkdLy9vamq6sLZ2dn\n3N3diYyM1PjduV6fJKNUYtoYGRnh5OQkFopok/kixg9vt0EhoP4BHxwcZGRkBKVSSXl5uSi4vmTJ\nEo4dO0Z0dDQVFRVcvXoVHx8f9u7dqxESncy90NPTw8/Pj+DgYHx8fIiOjhbDZTPhCZ6N8812tGA+\noG3d6Ln0WM7V/M3GhnB845T79+/T3d1NaWkpjo6OrFu3joSEBGpra4mOjsbV1VXDIAXttZ4FzQJU\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xe84a668>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fi.sort_values('importance',ascending=False).plot.bar(figsize=(11,7))\n",
    "plt.xticks(rotation=30)\n",
    "plt.title('Feature Importance',size='x-large')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__Based on the bar plot, 'TPP','Fare','Age' are the most important.__"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Now let's think through this problem in another way. Our goal here is to improve the overall accuracy. This is equivalent to minimizing the misclassified observations. So if all the misclassified observations are found, maybe we can see the pattern and generate some new features.**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Again we use cross-validation to search for the miscalssified observations**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.model_selection import KFold"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "kf=KFold(n_splits=10,random_state=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kf.get_n_splits(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "KFold(n_splits=10, random_state=1, shuffle=False)\n"
     ]
    }
   ],
   "source": [
    "print(kf)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# extract the indices of misclassified observations\n",
    "rr=[]\n",
    "for train_index, val_index in kf.split(X):\n",
    "    pred=model.fit(X.ix[train_index],y[train_index]).predict(X.ix[val_index])\n",
    "    rr.append(y[val_index][pred!=y[val_index]].index.values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[array([ 2, 14, 17, 18, 21, 23, 25, 30, 36, 38, 40, 41, 49, 55, 68, 74, 79,\n",
       "        81, 85], dtype=int64),\n",
       " array([106, 107, 111, 114, 127, 137, 139, 140, 141, 142, 146, 165, 169, 177], dtype=int64),\n",
       " array([184, 187, 199, 204, 205, 207, 209, 220, 224, 226, 233, 235, 240,\n",
       "        246, 248, 251, 261, 264, 267], dtype=int64),\n",
       " array([271, 273, 279, 283, 286, 288, 297, 301, 312, 315, 328, 330, 338,\n",
       "        347, 351], dtype=int64),\n",
       " array([357, 361, 390, 391, 396, 400, 414, 415, 429, 431, 444], dtype=int64),\n",
       " array([447, 449, 452, 453, 455, 460, 483, 489, 501, 502, 505, 507, 509,\n",
       "        510, 534], dtype=int64),\n",
       " array([536, 543, 547, 550, 553, 554, 569, 570, 578, 579, 587, 604, 607,\n",
       "        617, 621, 622], dtype=int64),\n",
       " array([630, 632, 643, 645, 647, 649, 654, 659, 660, 664, 673, 677, 680,\n",
       "        692, 698, 711, 712], dtype=int64),\n",
       " array([729, 744, 748, 762, 767, 772, 782], dtype=int64),\n",
       " array([804, 807, 816, 821, 828, 839, 852, 854, 855, 857], dtype=int64)]"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "143"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# combine all the indices\n",
    "whole_index=np.concatenate(rr)\n",
    "len(whole_index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Name</th>\n",
       "      <th>Parch</th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Title</th>\n",
       "      <th>AgeCut</th>\n",
       "      <th>FareCut</th>\n",
       "      <th>TPP</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>S</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>Miss</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>14.0</td>\n",
       "      <td>0</td>\n",
       "      <td>S</td>\n",
       "      <td>7.8542</td>\n",
       "      <td>Vestrom, Miss. Hulda Amanda Adolfina</td>\n",
       "      <td>0</td>\n",
       "      <td>15</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>350406</td>\n",
       "      <td>Girl</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>34.5</td>\n",
       "      <td>0</td>\n",
       "      <td>S</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>Williams, Mr. Charles Eugene</td>\n",
       "      <td>0</td>\n",
       "      <td>18</td>\n",
       "      <td>2</td>\n",
       "      <td>male</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>244373</td>\n",
       "      <td>Mr</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>31.0</td>\n",
       "      <td>0</td>\n",
       "      <td>S</td>\n",
       "      <td>18.0000</td>\n",
       "      <td>Vander Planke, Mrs. Julius (Emelia Maria Vande...</td>\n",
       "      <td>0</td>\n",
       "      <td>19</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>345763</td>\n",
       "      <td>Mrs</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>34.0</td>\n",
       "      <td>1</td>\n",
       "      <td>S</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>Beesley, Mr. Lawrence</td>\n",
       "      <td>0</td>\n",
       "      <td>22</td>\n",
       "      <td>2</td>\n",
       "      <td>male</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>248698</td>\n",
       "      <td>Mr</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     Age Cabin Embarked     Fare  \\\n",
       "2   26.0     0        S   7.9250   \n",
       "14  14.0     0        S   7.8542   \n",
       "17  34.5     0        S  13.0000   \n",
       "18  31.0     0        S  18.0000   \n",
       "21  34.0     1        S  13.0000   \n",
       "\n",
       "                                                 Name  Parch  PassengerId  \\\n",
       "2                              Heikkinen, Miss. Laina      0            3   \n",
       "14               Vestrom, Miss. Hulda Amanda Adolfina      0           15   \n",
       "17                       Williams, Mr. Charles Eugene      0           18   \n",
       "18  Vander Planke, Mrs. Julius (Emelia Maria Vande...      0           19   \n",
       "21                              Beesley, Mr. Lawrence      0           22   \n",
       "\n",
       "    Pclass     Sex  SibSp  Survived            Ticket Title  AgeCut  FareCut  \\\n",
       "2        3  female      0       1.0  STON/O2. 3101282  Miss     2.0      2.0   \n",
       "14       3  female      0       0.0            350406  Girl     1.0      2.0   \n",
       "17       2    male      0       1.0            244373    Mr     3.0      3.0   \n",
       "18       3  female      1       0.0            345763   Mrs     2.0      3.0   \n",
       "21       2    male      0       1.0            248698    Mr     3.0      3.0   \n",
       "\n",
       "    TPP  \n",
       "2   2.0  \n",
       "14  2.0  \n",
       "17  3.0  \n",
       "18  2.0  \n",
       "21  3.0  "
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full.ix[whole_index].head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "diff=full.ix[whole_index]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Parch</th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Survived</th>\n",
       "      <th>AgeCut</th>\n",
       "      <th>FareCut</th>\n",
       "      <th>TPP</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>143.000000</td>\n",
       "      <td>143.000000</td>\n",
       "      <td>143.000000</td>\n",
       "      <td>143.000000</td>\n",
       "      <td>143.000000</td>\n",
       "      <td>143.000000</td>\n",
       "      <td>143.000000</td>\n",
       "      <td>143.000000</td>\n",
       "      <td>143.000000</td>\n",
       "      <td>143.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>30.867133</td>\n",
       "      <td>25.823951</td>\n",
       "      <td>0.265734</td>\n",
       "      <td>403.167832</td>\n",
       "      <td>2.335664</td>\n",
       "      <td>0.426573</td>\n",
       "      <td>0.643357</td>\n",
       "      <td>2.426573</td>\n",
       "      <td>2.958042</td>\n",
       "      <td>2.608392</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>12.678160</td>\n",
       "      <td>28.147027</td>\n",
       "      <td>0.691508</td>\n",
       "      <td>248.636308</td>\n",
       "      <td>0.887662</td>\n",
       "      <td>0.773592</td>\n",
       "      <td>0.480692</td>\n",
       "      <td>0.782642</td>\n",
       "      <td>1.331494</td>\n",
       "      <td>0.581825</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>23.500000</td>\n",
       "      <td>7.925000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>202.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>30.000000</td>\n",
       "      <td>15.245800</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>397.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>37.000000</td>\n",
       "      <td>29.700000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>620.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>80.000000</td>\n",
       "      <td>151.550000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>858.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              Age        Fare       Parch  PassengerId      Pclass  \\\n",
       "count  143.000000  143.000000  143.000000   143.000000  143.000000   \n",
       "mean    30.867133   25.823951    0.265734   403.167832    2.335664   \n",
       "std     12.678160   28.147027    0.691508   248.636308    0.887662   \n",
       "min      2.000000    0.000000    0.000000     3.000000    1.000000   \n",
       "25%     23.500000    7.925000    0.000000   202.500000    1.000000   \n",
       "50%     30.000000   15.245800    0.000000   397.000000    3.000000   \n",
       "75%     37.000000   29.700000    0.000000   620.000000    3.000000   \n",
       "max     80.000000  151.550000    5.000000   858.000000    3.000000   \n",
       "\n",
       "            SibSp    Survived      AgeCut     FareCut         TPP  \n",
       "count  143.000000  143.000000  143.000000  143.000000  143.000000  \n",
       "mean     0.426573    0.643357    2.426573    2.958042    2.608392  \n",
       "std      0.773592    0.480692    0.782642    1.331494    0.581825  \n",
       "min      0.000000    0.000000    1.000000    1.000000    1.000000  \n",
       "25%      0.000000    0.000000    2.000000    2.000000    2.000000  \n",
       "50%      0.000000    1.000000    2.000000    3.000000    3.000000  \n",
       "75%      1.000000    1.000000    3.000000    4.000000    3.000000  \n",
       "max      4.000000    1.000000    5.000000    5.000000    3.000000  "
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diff.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Title</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>143</td>\n",
       "      <td>143</td>\n",
       "      <td>143</td>\n",
       "      <td>143</td>\n",
       "      <td>143</td>\n",
       "      <td>143</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>unique</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>143</td>\n",
       "      <td>2</td>\n",
       "      <td>131</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>top</th>\n",
       "      <td>0</td>\n",
       "      <td>S</td>\n",
       "      <td>Pickard, Mr. Berk (Berk Trembisky)</td>\n",
       "      <td>male</td>\n",
       "      <td>1601</td>\n",
       "      <td>Mr</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>freq</th>\n",
       "      <td>105</td>\n",
       "      <td>102</td>\n",
       "      <td>1</td>\n",
       "      <td>86</td>\n",
       "      <td>5</td>\n",
       "      <td>77</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Cabin Embarked                                Name   Sex Ticket Title\n",
       "count     143      143                                 143   143    143   143\n",
       "unique      2        3                                 143     2    131     6\n",
       "top         0        S  Pickard, Mr. Berk (Berk Trembisky)  male   1601    Mr\n",
       "freq      105      102                                   1    86      5    77"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diff.describe(include=['O'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>average</th>\n",
       "      <th>number</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Title</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Girl</th>\n",
       "      <td>0.333333</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Master</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Miss</th>\n",
       "      <td>0.333333</td>\n",
       "      <td>30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mr</th>\n",
       "      <td>0.831169</td>\n",
       "      <td>77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mrs</th>\n",
       "      <td>0.428571</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rareman</th>\n",
       "      <td>0.666667</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          average  number\n",
       "Title                    \n",
       "Girl     0.333333       6\n",
       "Master   1.000000       3\n",
       "Miss     0.333333      30\n",
       "Mr       0.831169      77\n",
       "Mrs      0.428571      21\n",
       "Rareman  0.666667       6"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# both mean and count of 'survived' should be considered.\n",
    "diff.groupby(['Title'])['Survived'].agg([('average','mean'),('number','count')])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>average</th>\n",
       "      <th>number</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Title</th>\n",
       "      <th>Pclass</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">Girl</th>\n",
       "      <th>1</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.400000</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Master</th>\n",
       "      <th>3</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">Miss</th>\n",
       "      <th>1</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.370370</td>\n",
       "      <td>27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">Mr</th>\n",
       "      <th>1</th>\n",
       "      <td>0.656250</td>\n",
       "      <td>32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.888889</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.972222</td>\n",
       "      <td>36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">Mrs</th>\n",
       "      <th>2</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.529412</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rareman</th>\n",
       "      <th>1</th>\n",
       "      <td>0.666667</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 average  number\n",
       "Title   Pclass                  \n",
       "Girl    1       0.000000       1\n",
       "        3       0.400000       5\n",
       "Master  3       1.000000       3\n",
       "Miss    1       0.000000       1\n",
       "        2       0.000000       2\n",
       "        3       0.370370      27\n",
       "Mr      1       0.656250      32\n",
       "        2       0.888889       9\n",
       "        3       0.972222      36\n",
       "Mrs     2       0.000000       4\n",
       "        3       0.529412      17\n",
       "Rareman 1       0.666667       6"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diff.groupby(['Title','Pclass'])['Survived'].agg([('average','mean'),('number','count')])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**It seems mainly the third class 'Miss'/'Mrs' and the first/third class 'Mr' are missclassified.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>average</th>\n",
       "      <th>number</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Title</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Parch</th>\n",
       "      <th>SibSp</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"6\" valign=\"top\">Girl</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>1</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"5\" valign=\"top\">3</th>\n",
       "      <th>0</th>\n",
       "      <th>0</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">1</th>\n",
       "      <th>0</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">2</th>\n",
       "      <th>0</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">Master</th>\n",
       "      <th rowspan=\"3\" valign=\"top\">3</th>\n",
       "      <th>1</th>\n",
       "      <th>1</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">2</th>\n",
       "      <th>0</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"6\" valign=\"top\">Miss</th>\n",
       "      <th>1</th>\n",
       "      <th>0</th>\n",
       "      <th>0</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <th>0</th>\n",
       "      <th>0</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"4\" valign=\"top\">3</th>\n",
       "      <th rowspan=\"3\" valign=\"top\">0</th>\n",
       "      <th>0</th>\n",
       "      <td>0.380952</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.500000</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <th>4</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"12\" valign=\"top\">Mr</th>\n",
       "      <th rowspan=\"6\" valign=\"top\">1</th>\n",
       "      <th rowspan=\"2\" valign=\"top\">0</th>\n",
       "      <th>0</th>\n",
       "      <td>0.705882</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.625000</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">1</th>\n",
       "      <th>0</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.666667</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">2</th>\n",
       "      <th>0</th>\n",
       "      <td>0.500000</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">2</th>\n",
       "      <th rowspan=\"2\" valign=\"top\">0</th>\n",
       "      <th>0</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.500000</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"4\" valign=\"top\">3</th>\n",
       "      <th rowspan=\"3\" valign=\"top\">0</th>\n",
       "      <th>0</th>\n",
       "      <td>0.968750</td>\n",
       "      <td>32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <th>1</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"10\" valign=\"top\">Mrs</th>\n",
       "      <th rowspan=\"3\" valign=\"top\">2</th>\n",
       "      <th rowspan=\"2\" valign=\"top\">0</th>\n",
       "      <th>0</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <th>1</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"7\" valign=\"top\">3</th>\n",
       "      <th rowspan=\"3\" valign=\"top\">0</th>\n",
       "      <th>0</th>\n",
       "      <td>0.500000</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.375000</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">1</th>\n",
       "      <th>0</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.666667</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <th>0</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <th>1</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">Rareman</th>\n",
       "      <th rowspan=\"2\" valign=\"top\">1</th>\n",
       "      <th rowspan=\"2\" valign=\"top\">0</th>\n",
       "      <th>0</th>\n",
       "      <td>0.600000</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                             average  number\n",
       "Title   Pclass Parch SibSp                  \n",
       "Girl    1      2     1      0.000000       1\n",
       "        3      0     0      0.000000       1\n",
       "               1     0      0.000000       1\n",
       "                     1      0.000000       1\n",
       "               2     0      1.000000       1\n",
       "                     4      1.000000       1\n",
       "Master  3      1     1      1.000000       1\n",
       "               2     0      1.000000       1\n",
       "                     4      1.000000       1\n",
       "Miss    1      0     0      0.000000       1\n",
       "        2      0     0      0.000000       2\n",
       "        3      0     0      0.380952      21\n",
       "                     1      0.000000       3\n",
       "                     2      0.500000       2\n",
       "               2     4      1.000000       1\n",
       "Mr      1      0     0      0.705882      17\n",
       "                     1      0.625000       8\n",
       "               1     0      0.000000       1\n",
       "                     1      0.666667       3\n",
       "               2     0      0.500000       2\n",
       "                     1      1.000000       1\n",
       "        2      0     0      1.000000       7\n",
       "                     1      0.500000       2\n",
       "        3      0     0      0.968750      32\n",
       "                     1      1.000000       2\n",
       "                     2      1.000000       1\n",
       "               1     1      1.000000       1\n",
       "Mrs     2      0     0      0.000000       1\n",
       "                     1      0.000000       2\n",
       "               1     1      0.000000       1\n",
       "        3      0     0      0.500000       2\n",
       "                     1      0.375000       8\n",
       "                     3      1.000000       1\n",
       "               1     0      1.000000       1\n",
       "                     1      0.666667       3\n",
       "               2     0      0.000000       1\n",
       "               5     1      1.000000       1\n",
       "Rareman 1      0     0      0.600000       5\n",
       "                     2      1.000000       1"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diff.groupby(['Title','Pclass','Parch','SibSp'])['Survived'].agg([('average','mean'),('number','count')])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Gererally, we should only pick the categories with relatively large numbers. That is:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1. **'Mr','Pclass 1','Parch 0','SibSp 0', 17**\n",
    "2. **'Mr','Pclass 1','Parch 0','SibSp 1', 8**\n",
    "3. **'Mr','Pclass 2/3','Parch 0','SibSp 0', 32+7**\n",
    "4. **'Miss','Pclass 3','Parch 0','SibSp 0', 21**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__Then we add new feature 'MPPS'.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "full.loc[(full.Title=='Mr')&(full.Pclass==1)&(full.Parch==0)&((full.SibSp==0)|(full.SibSp==1)),'MPPS']=1\n",
    "full.loc[(full.Title=='Mr')&(full.Pclass!=1)&(full.Parch==0)&(full.SibSp==0),'MPPS']=2\n",
    "full.loc[(full.Title=='Miss')&(full.Pclass==3)&(full.Parch==0)&(full.SibSp==0),'MPPS']=3\n",
    "full.MPPS.fillna(4,inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4.0    606\n",
       "2.0    485\n",
       "1.0    132\n",
       "3.0     86\n",
       "Name: MPPS, dtype: int64"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full.MPPS.value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "From the __feature-Importance__ plot we can see the 'Fare' is the most important feature, let's explore whether we can generate some new feature."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th colspan=\"8\" halign=\"left\">Fare</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Title</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"4\" valign=\"top\">Miss</th>\n",
       "      <th rowspan=\"3\" valign=\"top\">0.0</th>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>28.712500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>28.7125</td>\n",
       "      <td>28.71250</td>\n",
       "      <td>28.7125</td>\n",
       "      <td>28.712500</td>\n",
       "      <td>28.7125</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2.0</td>\n",
       "      <td>13.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>13.00000</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>13.000000</td>\n",
       "      <td>13.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>17.0</td>\n",
       "      <td>9.564712</td>\n",
       "      <td>3.410307</td>\n",
       "      <td>6.7500</td>\n",
       "      <td>7.75000</td>\n",
       "      <td>7.8542</td>\n",
       "      <td>8.662500</td>\n",
       "      <td>18.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1.0</th>\n",
       "      <th>3</th>\n",
       "      <td>10.0</td>\n",
       "      <td>9.999590</td>\n",
       "      <td>4.904273</td>\n",
       "      <td>7.5500</td>\n",
       "      <td>7.75625</td>\n",
       "      <td>7.8896</td>\n",
       "      <td>9.362525</td>\n",
       "      <td>23.2500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"6\" valign=\"top\">Mr</th>\n",
       "      <th rowspan=\"3\" valign=\"top\">0.0</th>\n",
       "      <th>1</th>\n",
       "      <td>11.0</td>\n",
       "      <td>60.678027</td>\n",
       "      <td>35.887886</td>\n",
       "      <td>26.5500</td>\n",
       "      <td>29.85000</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>94.050000</td>\n",
       "      <td>113.2750</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>27.720800</td>\n",
       "      <td>NaN</td>\n",
       "      <td>27.7208</td>\n",
       "      <td>27.72080</td>\n",
       "      <td>27.7208</td>\n",
       "      <td>27.720800</td>\n",
       "      <td>27.7208</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>56.495800</td>\n",
       "      <td>NaN</td>\n",
       "      <td>56.4958</td>\n",
       "      <td>56.49580</td>\n",
       "      <td>56.4958</td>\n",
       "      <td>56.495800</td>\n",
       "      <td>56.4958</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">1.0</th>\n",
       "      <th>1</th>\n",
       "      <td>21.0</td>\n",
       "      <td>51.167862</td>\n",
       "      <td>30.466921</td>\n",
       "      <td>26.5500</td>\n",
       "      <td>26.55000</td>\n",
       "      <td>35.5000</td>\n",
       "      <td>76.729200</td>\n",
       "      <td>120.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>8.0</td>\n",
       "      <td>14.107812</td>\n",
       "      <td>4.963091</td>\n",
       "      <td>10.5000</td>\n",
       "      <td>12.37500</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>13.215625</td>\n",
       "      <td>26.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>35.0</td>\n",
       "      <td>14.217260</td>\n",
       "      <td>15.845064</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>7.77500</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>9.081250</td>\n",
       "      <td>56.4958</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                       Fare                                                    \\\n",
       "                      count       mean        std      min       25%      50%   \n",
       "Title Survived Pclass                                                           \n",
       "Miss  0.0      1        1.0  28.712500        NaN  28.7125  28.71250  28.7125   \n",
       "               2        2.0  13.000000   0.000000  13.0000  13.00000  13.0000   \n",
       "               3       17.0   9.564712   3.410307   6.7500   7.75000   7.8542   \n",
       "      1.0      3       10.0   9.999590   4.904273   7.5500   7.75625   7.8896   \n",
       "Mr    0.0      1       11.0  60.678027  35.887886  26.5500  29.85000  53.1000   \n",
       "               2        1.0  27.720800        NaN  27.7208  27.72080  27.7208   \n",
       "               3        1.0  56.495800        NaN  56.4958  56.49580  56.4958   \n",
       "      1.0      1       21.0  51.167862  30.466921  26.5500  26.55000  35.5000   \n",
       "               2        8.0  14.107812   4.963091  10.5000  12.37500  13.0000   \n",
       "               3       35.0  14.217260  15.845064   0.0000   7.77500   7.9250   \n",
       "\n",
       "                                            \n",
       "                             75%       max  \n",
       "Title Survived Pclass                       \n",
       "Miss  0.0      1       28.712500   28.7125  \n",
       "               2       13.000000   13.0000  \n",
       "               3        8.662500   18.0000  \n",
       "      1.0      3        9.362525   23.2500  \n",
       "Mr    0.0      1       94.050000  113.2750  \n",
       "               2       27.720800   27.7208  \n",
       "               3       56.495800   56.4958  \n",
       "      1.0      1       76.729200  120.0000  \n",
       "               2       13.215625   26.0000  \n",
       "               3        9.081250   56.4958  "
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diff[(diff.Title=='Mr')|(diff.Title=='Miss')].groupby(['Title','Survived','Pclass'])[['Fare']].describe().unstack()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th colspan=\"8\" halign=\"left\">Fare</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Title</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"6\" valign=\"top\">Miss</th>\n",
       "      <th rowspan=\"3\" valign=\"top\">0.0</th>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>28.712500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>28.7125</td>\n",
       "      <td>28.7125</td>\n",
       "      <td>28.7125</td>\n",
       "      <td>28.712500</td>\n",
       "      <td>28.7125</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2.0</td>\n",
       "      <td>13.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>13.000000</td>\n",
       "      <td>13.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>30.0</td>\n",
       "      <td>11.637643</td>\n",
       "      <td>8.512399</td>\n",
       "      <td>6.7500</td>\n",
       "      <td>7.7750</td>\n",
       "      <td>8.4000</td>\n",
       "      <td>10.346900</td>\n",
       "      <td>46.9000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">1.0</th>\n",
       "      <th>1</th>\n",
       "      <td>43.0</td>\n",
       "      <td>126.099126</td>\n",
       "      <td>92.270616</td>\n",
       "      <td>26.2833</td>\n",
       "      <td>77.1250</td>\n",
       "      <td>90.0000</td>\n",
       "      <td>152.506250</td>\n",
       "      <td>512.3292</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>23.0</td>\n",
       "      <td>17.611230</td>\n",
       "      <td>12.193091</td>\n",
       "      <td>10.5000</td>\n",
       "      <td>12.1750</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>17.429150</td>\n",
       "      <td>65.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>37.0</td>\n",
       "      <td>9.216559</td>\n",
       "      <td>4.004733</td>\n",
       "      <td>7.2250</td>\n",
       "      <td>7.7500</td>\n",
       "      <td>7.7750</td>\n",
       "      <td>7.925000</td>\n",
       "      <td>24.1500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"6\" valign=\"top\">Mr</th>\n",
       "      <th rowspan=\"3\" valign=\"top\">0.0</th>\n",
       "      <th>1</th>\n",
       "      <td>70.0</td>\n",
       "      <td>65.164104</td>\n",
       "      <td>61.918723</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>28.8000</td>\n",
       "      <td>48.3021</td>\n",
       "      <td>78.459375</td>\n",
       "      <td>263.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>89.0</td>\n",
       "      <td>19.651638</td>\n",
       "      <td>15.857649</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>11.5000</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>26.000000</td>\n",
       "      <td>73.5000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>283.0</td>\n",
       "      <td>10.779237</td>\n",
       "      <td>9.170363</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>7.7333</td>\n",
       "      <td>7.8958</td>\n",
       "      <td>8.662500</td>\n",
       "      <td>69.5500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">1.0</th>\n",
       "      <th>1</th>\n",
       "      <td>37.0</td>\n",
       "      <td>73.464646</td>\n",
       "      <td>109.590302</td>\n",
       "      <td>26.2875</td>\n",
       "      <td>26.5500</td>\n",
       "      <td>35.5000</td>\n",
       "      <td>76.729200</td>\n",
       "      <td>512.3292</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>8.0</td>\n",
       "      <td>14.107812</td>\n",
       "      <td>4.963091</td>\n",
       "      <td>10.5000</td>\n",
       "      <td>12.3750</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>13.215625</td>\n",
       "      <td>26.0000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>36.0</td>\n",
       "      <td>15.391664</td>\n",
       "      <td>17.133150</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>7.7750</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>9.500000</td>\n",
       "      <td>56.4958</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                        Fare                                            \\\n",
       "                       count        mean         std      min      25%   \n",
       "Title Survived Pclass                                                    \n",
       "Miss  0.0      1         1.0   28.712500         NaN  28.7125  28.7125   \n",
       "               2         2.0   13.000000    0.000000  13.0000  13.0000   \n",
       "               3        30.0   11.637643    8.512399   6.7500   7.7750   \n",
       "      1.0      1        43.0  126.099126   92.270616  26.2833  77.1250   \n",
       "               2        23.0   17.611230   12.193091  10.5000  12.1750   \n",
       "               3        37.0    9.216559    4.004733   7.2250   7.7500   \n",
       "Mr    0.0      1        70.0   65.164104   61.918723   0.0000  28.8000   \n",
       "               2        89.0   19.651638   15.857649   0.0000  11.5000   \n",
       "               3       283.0   10.779237    9.170363   0.0000   7.7333   \n",
       "      1.0      1        37.0   73.464646  109.590302  26.2875  26.5500   \n",
       "               2         8.0   14.107812    4.963091  10.5000  12.3750   \n",
       "               3        36.0   15.391664   17.133150   0.0000   7.7750   \n",
       "\n",
       "                                                      \n",
       "                           50%         75%       max  \n",
       "Title Survived Pclass                                 \n",
       "Miss  0.0      1       28.7125   28.712500   28.7125  \n",
       "               2       13.0000   13.000000   13.0000  \n",
       "               3        8.4000   10.346900   46.9000  \n",
       "      1.0      1       90.0000  152.506250  512.3292  \n",
       "               2       13.0000   17.429150   65.0000  \n",
       "               3        7.7750    7.925000   24.1500  \n",
       "Mr    0.0      1       48.3021   78.459375  263.0000  \n",
       "               2       13.0000   26.000000   73.5000  \n",
       "               3        7.8958    8.662500   69.5500  \n",
       "      1.0      1       35.5000   76.729200  512.3292  \n",
       "               2       13.0000   13.215625   26.0000  \n",
       "               3        7.9250    9.500000   56.4958  "
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full[(full.Title=='Mr')|(full.Title=='Miss')].groupby(['Title','Survived','Pclass'])[['Fare']].describe().unstack()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "But there seems no big difference between the 'Fare' of 'diff' and 'full'."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__Finally we could draw a corrlelation heatmap__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0xf335358>"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xf335710>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "colormap = plt.cm.viridis\n",
    "plt.figure(figsize=(12,12))\n",
    "plt.title('Pearson Correlation of Features', y=1.05, size=20)\n",
    "sns.heatmap(full[['Cabin','Parch','Pclass','SibSp','AgeCut','TPP','FareCut','Age','Fare','MPPS','Survived']].astype(float).corr(),linewidths=0.1,vmax=1.0, square=True, cmap=colormap, linecolor='white', annot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Hyperparameters Tuning"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__Now let's do grid search for some algorithms. Since many algorithms performs better in scaled data, we will use scaled data.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "predictors=['Cabin','Embarked','Parch','Pclass','Sex','SibSp','Title','AgeCut','TPP','FareCut','Age','Fare','MPPS']\n",
    "full_dummies=pd.get_dummies(full[predictors])\n",
    "X=full_dummies[:891]\n",
    "y=full.Survived[:891]\n",
    "test_X=full_dummies[891:]\n",
    "\n",
    "scaler=StandardScaler()\n",
    "X_scaled=scaler.fit(X).transform(X)\n",
    "test_X_scaled=scaler.fit(X).transform(test_X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.model_selection import GridSearchCV"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### k-Nearest Neighbors"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "({'n_neighbors': 8}, 0.8271604938271605)"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "param_grid={'n_neighbors':[1,2,3,4,5,6,7,8,9]}\n",
    "grid_search=GridSearchCV(KNeighborsClassifier(),param_grid,cv=5)\n",
    "\n",
    "grid_search.fit(X_scaled,y)\n",
    "\n",
    "grid_search.best_params_,grid_search.best_score_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Logistic Regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "({'C': 0.1}, 0.83052749719416386)"
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "param_grid={'C':[0.01,0.1,1,10]}\n",
    "grid_search=GridSearchCV(LogisticRegression(),param_grid,cv=5)\n",
    "\n",
    "grid_search.fit(X_scaled,y)\n",
    "\n",
    "grid_search.best_params_,grid_search.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "({'C': 0.06}, 0.83277216610549942)"
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# second round grid search\n",
    "param_grid={'C':[0.04,0.06,0.08,0.1,0.12,0.14]}\n",
    "grid_search=GridSearchCV(LogisticRegression(),param_grid,cv=5)\n",
    "\n",
    "grid_search.fit(X_scaled,y)\n",
    "\n",
    "grid_search.best_params_,grid_search.best_score_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Support Vector Machine"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "({'C': 10, 'gamma': 0.01}, 0.83164983164983164)"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "param_grid={'C':[0.01,0.1,1,10],'gamma':[0.01,0.1,1,10]}\n",
    "grid_search=GridSearchCV(SVC(),param_grid,cv=5)\n",
    "\n",
    "grid_search.fit(X_scaled,y)\n",
    "\n",
    "grid_search.best_params_,grid_search.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "({'C': 4, 'gamma': 0.015}, 0.83501683501683499)"
      ]
     },
     "execution_count": 103,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#second round grid search\n",
    "param_grid={'C':[2,4,6,8,10,12,14],'gamma':[0.008,0.01,0.012,0.015,0.02]}\n",
    "grid_search=GridSearchCV(SVC(),param_grid,cv=5)\n",
    "\n",
    "grid_search.fit(X_scaled,y)\n",
    "\n",
    "grid_search.best_params_,grid_search.best_score_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Gradient Boosting Decision Tree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "({'learning_rate': 0.1, 'max_depth': 3, 'n_estimators': 120},\n",
       " 0.84399551066217737)"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "param_grid={'n_estimators':[30,50,80,120,200],'learning_rate':[0.05,0.1,0.5,1],'max_depth':[1,2,3,4,5]}\n",
    "grid_search=GridSearchCV(GradientBoostingClassifier(),param_grid,cv=5)\n",
    "\n",
    "grid_search.fit(X_scaled,y)\n",
    "\n",
    "grid_search.best_params_,grid_search.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "({'learning_rate': 0.12, 'max_depth': 4, 'n_estimators': 100},\n",
       " 0.85072951739618408)"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#second round search\n",
    "param_grid={'n_estimators':[100,120,140,160],'learning_rate':[0.05,0.08,0.1,0.12],'max_depth':[3,4]}\n",
    "grid_search=GridSearchCV(GradientBoostingClassifier(),param_grid,cv=5)\n",
    "\n",
    "grid_search.fit(X_scaled,y)\n",
    "\n",
    "grid_search.best_params_,grid_search.best_score_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Ensemble Methods "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Bagging"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__We use logistic regression with the parameter we just tuned to apply bagging.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.ensemble import BaggingClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "bagging=BaggingClassifier(LogisticRegression(C=0.06),n_estimators=100)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## VotingClassifier"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__We use five models to apply votingclassifier, namely logistic regression, random forest, gradient boosting decision,support vector machine and k-nearest neighbors.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.ensemble import VotingClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "clf1=LogisticRegression(C=0.06)\n",
    "clf2=RandomForestClassifier(n_estimators=500)\n",
    "clf3=GradientBoostingClassifier(n_estimators=120,learning_rate=0.12,max_depth=4)\n",
    "clf4=SVC(C=4,gamma=0.015,probability=True)\n",
    "clf5=KNeighborsClassifier(n_neighbors=8)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "eclf_hard=VotingClassifier(estimators=[('LR',clf1),('RF',clf2),('GDBT',clf3),('SVM',clf4),('KNN',clf5)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# add weights\n",
    "eclfW_hard=VotingClassifier(estimators=[('LR',clf1),('RF',clf2),('GDBT',clf3),('SVM',clf4),('KNN',clf5)],weights=[1,1,2,2,1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# soft voting\n",
    "eclf_soft=VotingClassifier(estimators=[('LR',clf1),('RF',clf2),('GDBT',clf3),('SVM',clf4),('KNN',clf5)],voting='soft')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# add weights\n",
    "eclfW_soft=VotingClassifier(estimators=[('LR',clf1),('RF',clf2),('GDBT',clf3),('SVM',clf4),('KNN',clf5)],voting='soft',weights=[1,1,2,2,1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__Finally we can evaluate all the models we just used.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "models=[KNeighborsClassifier(n_neighbors=8),LogisticRegression(C=0.06),GaussianNB(),DecisionTreeClassifier(),RandomForestClassifier(n_estimators=500),\n",
    "        GradientBoostingClassifier(n_estimators=120,learning_rate=0.12,max_depth=4),SVC(C=4,gamma=0.015),\n",
    "        eclf_hard,eclf_soft,eclfW_hard,eclfW_soft,bagging]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "KNN: 0.827196415899,[ 0.84916201  0.77653631  0.87078652  0.80898876  0.83050847]\n",
      "LR: 0.832814818992,[ 0.84357542  0.81564246  0.81460674  0.8258427   0.86440678]\n",
      "NB: 0.801460784095,[ 0.75977654  0.79888268  0.81460674  0.7752809   0.85875706]\n",
      "CART: 0.791240650446,[ 0.7877095   0.78212291  0.84831461  0.76404494  0.7740113 ]\n",
      "RF: 0.799150325893,[ 0.81564246  0.75977654  0.84831461  0.75280899  0.81920904]\n",
      "GBT: 0.850748336665,[ 0.87150838  0.82122905  0.88202247  0.82022472  0.85875706]\n",
      "SVM: 0.83505580386,[ 0.84357542  0.82681564  0.83146067  0.80337079  0.8700565 ]\n",
      "VC_hard: 0.845168163411,[ 0.84357542  0.82681564  0.87640449  0.80898876  0.8700565 ]\n",
      "VC_soft: 0.839562740023,[ 0.84357542  0.81564246  0.86516854  0.80337079  0.8700565 ]\n",
      "VCW_hard: 0.847402800282,[ 0.84916201  0.83240223  0.87640449  0.80898876  0.8700565 ]\n",
      "VCW_soft: 0.838432867447,[ 0.83798883  0.82681564  0.85393258  0.80337079  0.8700565 ]\n",
      "Bagging: 0.83058018212,[ 0.83798883  0.81005587  0.81460674  0.8258427   0.86440678]\n"
     ]
    }
   ],
   "source": [
    "names=['KNN','LR','NB','CART','RF','GBT','SVM','VC_hard','VC_soft','VCW_hard','VCW_soft','Bagging']\n",
    "for name,model in zip(names,models):\n",
    "    score=cross_val_score(model,X_scaled,y,cv=5)\n",
    "    print(\"{}: {},{}\".format(name,score.mean(),score))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Stacking"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "__We use logistic regression, k-nearest neighbors, support vector machine, Gradient Boosting Decision Tree as first-level models, and use random forest as second-level model.__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.model_selection import StratifiedKFold\n",
    "n_train=train.shape[0]\n",
    "n_test=test.shape[0]\n",
    "kf=StratifiedKFold(n_splits=5,random_state=1,shuffle=True)  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def get_oof(clf,X,y,test_X):\n",
    "    oof_train=np.zeros((n_train,))\n",
    "    oof_test_mean=np.zeros((n_test,))\n",
    "    oof_test_single=np.empty((5,n_test))\n",
    "    for i, (train_index,val_index) in enumerate(kf.split(X,y)):\n",
    "        kf_X_train=X[train_index]\n",
    "        kf_y_train=y[train_index]\n",
    "        kf_X_val=X[val_index]\n",
    "        \n",
    "        clf.fit(kf_X_train,kf_y_train)\n",
    "        \n",
    "        oof_train[val_index]=clf.predict(kf_X_val)\n",
    "        oof_test_single[i,:]=clf.predict(test_X)\n",
    "    oof_test_mean=oof_test_single.mean(axis=0)\n",
    "    return oof_train.reshape(-1,1), oof_test_mean.reshape(-1,1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "LR_train,LR_test=get_oof(LogisticRegression(C=0.06),X_scaled,y,test_X_scaled)\n",
    "KNN_train,KNN_test=get_oof(KNeighborsClassifier(n_neighbors=8),X_scaled,y,test_X_scaled)\n",
    "SVM_train,SVM_test=get_oof(SVC(C=4,gamma=0.015),X_scaled,y,test_X_scaled)\n",
    "GBDT_train,GBDT_test=get_oof(GradientBoostingClassifier(n_estimators=120,learning_rate=0.12,max_depth=4),X_scaled,y,test_X_scaled)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_stack=np.concatenate((LR_train,KNN_train,SVM_train,GBDT_train),axis=1)\n",
    "y_stack=y\n",
    "X_test_stack=np.concatenate((LR_test,KNN_test,SVM_test,GBDT_test),axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((891L, 4L), (891L,), (418L, 4L))"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_stack.shape,y_stack.shape,X_test_stack.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "stack_score=cross_val_score(RandomForestClassifier(n_estimators=1000),X_stack,y_stack,cv=5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.84069254167070062,\n",
       " array([ 0.84916201,  0.79888268,  0.85393258,  0.83707865,  0.86440678]))"
      ]
     },
     "execution_count": 123,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# cross-validation score of stacking\n",
    "stack_score.mean(),stack_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "pred=RandomForestClassifier(n_estimators=500).fit(X_stack,y_stack).predict(X_test_stack)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "tt=pd.DataFrame({'PassengerId':test.PassengerId,'Survived':pred})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {},
   "outputs": [],
   "source": [
    "tt.to_csv('G.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
